2011-09-18 20 views
18

Quiero poder hacer una etiqueta if basada en el valor de URL actual.Plantilla de Django, si la etiqueta está basada en el valor de URL actual

por ejemplo, si la URL de la página actual es accounts/login/, a continuación, no mostrar un enlace, sin pasar una variable de la vista.

No estoy seguro de cómo puedo escribir una etiqueta {% if %} para esto, ¿es posible?

+0

posible duplicado: http://stackoverflow.com/questions/2882490/get-the-current-url-within-a-django-template – arie

Respuesta

19

Si pasa el objeto "solicitud" a la plantilla, a continuación, que son capaces de usar esto:

{% if request.get_full_path == "/account/login/" %} 
+0

Hay un error muy pequeño en esto que no puedo actualizar con un editar. Necesita usar == no = para la comparación. –

36

También puede hacer esto por las URLs dinámicas usando:

{% url 'show_user_page' user=user as the_url %} 
{% if request.get_full_path == the_url %}something{% endif %} 

donde su urls.py contiene algo como:

(r'^myapp/user/(?P<user>\d+)/$', 'show_user_page'), 

Lo sé porque acabo de pasar siglos dibujando un stackoverflow pregunta, cuando encontré the answer en los documentos.

Yo diría que incluso en casos simples, este podría ser el mejor enfoque, porque está más débilmente acoplado.

+0

Woooow. el 'como' allí hizo mi día. Usar el mismo fragmento en varias páginas a través de la etiqueta de inclusión, y necesitaba una forma de mostrar diferentes enlaces, dependiendo de en qué página. Enfoque inmejorable! – Rexford

Cuestiones relacionadas