2011-12-21 24 views
8

Acabo de empezar a aprender python y django y tengo una pregunta. Obtuve la tarea de convertir vistas de funciones en vistas basadas en clases. Pero mis enlaces no funcionarán ahora.Django URL inversa con parámetros para una vista basada en clase

éstos son de urls.py:

url(r'^$', ContactIndex.as_view()), 
url(r'^add$', ContactAdd.as_view()), 
url(r'^([0-9]+)/update$', ContactUpdate.as_view()), 
url(r'^([0-9]+)/view$', ContactView.as_view()), 

Ésta es mi enlace:

{% url rtr_contact.views.ContactView contact.id %} 

pero esto no funciona se dice:

Caught NoReverseMatch while rendering: Reverse for 'rtr_contact.views.ContactView' with arguments '(20L,)' and keyword arguments '{}' not found. 
+1

Usted debe sufijo sus patrones de URL con una barra. Es un estándar en Django también hace que sea más fácil para otros programas trabajar con él (sin entrar en detalles sangrientos ...) – jpic

Respuesta

17

Para hacer marcha atrás url fácil, Te recomiendo que siempre name your url patterns.

url(r'^$', ContactIndex.as_view(), name="contact_index"), 
url(r'^add$', ContactAdd.as_view(), name="contact_add"), 
url(r'^([0-9]+)/update$', ContactUpdate.as_view(), name="contact_update"), 
url(r'^([0-9]+)/view$', ContactView.as_view(), name="contact_view"), 

Luego, en la plantilla:

{% url contact_view contact.id %} 
+1

Gracias, funcionó. Ojalá la documentación de django fuera más fácil. – user769498

+2

Creo que, en general, la documentación de Django es excelente. La sección de vistas basadas en clases está un poco desnuda, pero ojalá se desarrolle en el futuro. – Alasdair

+2

Es el futuro, y todavía faltan los documentos de vista genérica basados ​​en clases. Gracias por su respuesta, me ayudó también. – tatlar

Cuestiones relacionadas