2012-08-29 54 views
5

que tiene una URL definida de la siguiente manera:django {% url%} etiqueta sin parámetros

url(r'^details/(?P<id>\d+)$', DetailView.as_view(), name='detail_view'), 

En mis plantillas, quiero ser capaz de obtener la siguiente url: /details/ de la URL definida.

Intenté {% url detail_view %}, pero me sale un error ya que no estoy especificando el parámetro id.

Necesito la url sin la ID porque la anexaré usando JS.

¿Cómo puedo lograr esto?

+2

¿Cuál sería el propósito? Esta URL no puede coincidir si no hay un parámetro 'id', entonces, ¿por qué le gustaría crear un enlace a ella? ¿Tal vez estás tratando de resolver otro problema y tu solución no es la correcta? –

+0

Agregaré el ID usando javascript, pero me gustaría tener el URL como variable js. – AlexBrand

+1

Siempre puede usar el reverso con 'id = -1' (que de todas maneras no esperaría que fuera una identificación) y reemplace la -1 más a la derecha con la identificación adecuada cuando la necesite. Me parece muy harto si me preguntas, pero siempre es mejor que definir otra URL. –

Respuesta

6

Sólo añadir esta línea a su urls.py:

url(r'^details/$', DetailView.as_view(), name='detail_view'), 

o:

url(r'^details/(?P<id>\d*)$', DetailView.as_view(), name='detail_view'), 

(Esta es una solución más limpia - gracias a Thomas Orozco)

Tendrá para especificar que id es opcional en su función de vista:

def view(request, id=None): 
+0

Nota: los dos urlpatterns necesitarán tener un nombre único, así que si le pones este nombre "detail_view", cambia el nombre de tu original a algo como "detail_view_with_id". –

+2

Si va a modificar la vista para aceptar un parámetro opcional, creo que también podría hacer que el parámetro sea opcional: 'r '^ details/(? P \ d *) $''. –

+0

cómo se especifica el parámetro id en la plantilla '{% url detail_view%}' – user1629366

Cuestiones relacionadas