2011-10-05 31 views
5

Con las vistas basadas en clases que se han vuelto MUCHO mejor en Django, me encuentro con un problema de "mejores prácticas" al implementar una vista basada en clase. Básicamente se trata de URL template tag.Django: Mejor práctica para URL conf, plantilla de plantilla url

dado un urls.py así:

urlpatterns = patterns('some_app.views', 
    url(r'^$', 'index', name='some_app_index') 
) 

esa etiqueta puede tomar una ruta de acceso a una vista:

{% url some_app.views.index %} 

o el nombre de un url:

{% url some_app_index %} 

Ahora, con un conf url basado en clases, uno termina contigo p con una URL como esta:

from some_app.views import Index 

urlpatterns = patterns('', 
    url(r'^$', Index.as_view(), name='some_app_index') 
) 

Lo que significa que el uso de {% url some_app.views.index %} ya no funciona pero {% url some_app_index %} todavía lo hace. (Y {% url some_app.views.Index.as_view %} no parece ser una solución).


lo tanto, mi pregunta es, ¿cuál es la mejor práctica para refiriéndose a confs URL de una plantilla?

En este punto, creí que utilizar el método path.to.view era mejor, ya que estaba limpiamente espaciado de nombres. Sin embargo, con vistas basadas en clases que se ven cada vez mejores, ¿está utilizando el url name una mejor forma de hacerlo? En ese caso, el espacio de nombres depende por completo del atributo de nombre que el desarrollador de la aplicación haya configurado de manera que separe el nombre de la url de otras aplicaciones ...

¿Pensamientos? No pude encontrar un "hazlo de esta manera" en la documentación de Django, pero si alguien ha escrito sobre esto, me encantaría leerlo.

Respuesta

8

Siempre uso nombres.

Además del problema que menciona con las rutas, también podría tener un problema si tiene dos URL apuntando a la misma vista.

+0

Me preguntaba qué podría pasar. ¡Esto obviamente es mejor! – Alvaro

Cuestiones relacionadas