2009-05-12 15 views
6

Una de las cosas que me sucede a menudo es pasar literales de cadena como parámetros a las etiquetas o funciones de la plantilla; por ejemplo:Usar literales de cadena como parámetros para las etiquetas de plantilla en las plantillas de Django

{% url my-url 'my_param' %} 

Lamentablemente, el motor de plantillas django no te permite hacer esto. Así que me encuentro haciendo esto mucho en mi código de la vista:

my_context_dict['MY_PARAM'] = 'my_param' 

y luego en mi código de la vista:

{% url my-url MY_PARAM %} 

o la creación de una serie de asignaciones de URL, que personalmente tratar de evitar.

¿Es posible utilizar un literal de cadena en las plantillas de Django? ¿O posiblemente una solución más elegante? No he visto nada aquí ni en la documentación.

Respuesta

12

Esto se siente mal, pero está bien.

<a href="{% url someting "param1" "param2" %}">text</a> 

Los anidados "" 's no parecen como deben trabajar. Ellas hacen. El material Django {% %} simplemente se extrae del HTML sin tener en cuenta el contexto circundante. Por lo tanto, los "duplicados" " no están realmente duplicados.

+0

¿qué cambios se requieren en url.py urlpatterns? – jencko

12

Use comillas dobles en lugar de comillas simples:

{% url my_view "my_param" %} 
1

Muy extraño - Tengo un proyecto django que usa comillas simples para pasar un valor de cadena y funciona muy bien.

<a href="{% url categories 'vendor' %}"</a> 
<a href="{% url categories 'crew' %}"</a> 

En una investigación adicional resulta this has changed in django 1.5. Ahora requiere las comillas incluso alrededor del nombre del patrón de url.

Cuestiones relacionadas