Uso de comillas en los parámetros de {% url %} en Django

Sólo un idiota puede ser totalmente feliz.

Mario Vargas Llosa

Suscríbete al feed

Comentarios recientes

Hace poco comenté sobre el importante detalle de usar las comillas correctas en Python y simplejson y hoy me encuentro con otro caso similar en Django.

El detalle se encuentra en las plantillas de Django, me estoy refiriendo a la versión 1.0, al usar la etiqueta {% url %}, muy útil para nombres en los patrones de los URL.

Imaginemos un url como el siguiente en tu URLConf:

url(r'^add/chatroom/(?P\w+)$', 'myapp_chatroom_add', name='myapp_chatroom_add'),

Ahora es posible insertar {% url %} en una plantilla para obtener el url correcto de esta manera:

{% url myapp_chatroom_add chatroom_data="abc" %}

Nota que estoy pasando el texto "abc" entre comillas dobles al parámetro chatroom_data de la función.

Y aquí viene lo importante, las siguientes dos formas no funcionarán:

{% url myapp_chatroom_add chatroom_data=abc %}

pues no usa comillas. Ni esta:

{% url myapp_chatroom_add chatroom_data='abc' %}

que utiliza comillas simples.

Los errores pueden variar dependiendo del contexto pero lo importante es notar que al pasar parámetros que no sean números a {% url %} es necesario usar comillas dobles.

Si estás usando números puedes usar comillas dobles o remover por completo las comillas pero las comillas simples tampoco funcionarán.

Participa en la discusión

Que tal Alexis. Llego con una

Que tal Alexis. Llego con una nueva consulta. Tengo un inconveniente al querer pasar fechas como parámetros en un {% url %}.
Tengo una sección para hacer un nuevo turno (un sistema de turnero se trata), el cual recibiría a través del url la fecha en la cual se va a sacar (ya que la página además mostraría los turnos que hay en ese día). El urlconf es "/turnos/<año>//" con el nombre 'turno_nuevo_dia'.
Ahora mi pregunta: cómo hago para pasarle la fecha actual?? Pretendo usar el tag NOW, pero asumo que hay problemas usando un tag adentro de otro ya que lo siguiente no me funciona: {% url turno_nuevo_dia now "Y", now "m", now "d" %}. Probé con todas las variantes de sintaxis que pueden llegar a existir y no logré nada. Ayudarías a este novato una vez más? :D
Gracias de antemano. Saludos

Publica comentarios relevantes, usa español correcto y no envíes publicidad. Creemos discusiones en las que valga la pena participar. Puedes usar Markdown.

Tu comentario