En mi urls.py tengo:Django - Cómo pasar varios argumentos para la etiqueta de plantilla url
(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/section/(?P<slug>[-\w]+)/$',
'paper.views.issue_section_detail',
{},
'paper_issue_section_detail'
),
y estoy tratando de hacer esto en una plantilla:
{% url paper_issue_section_detail issue.pub_date.year,issue.pub_date.month,issue.pub_date.day,section_li.slug %}
pero Obtengo este error:
TemplateSyntaxError
Caught an exception while rendering: Reverse for 'paper_issue_section_detail' with arguments '(2010, 1, 22, u'business')' and keyword arguments '{}' not found.
Sin embargo, si cambio el patrón de URL para que solo requiera un único argumento, funciona bien. es decir:
(r'^(?P<year>\d{4})/$',
'paper.views.issue_section_detail',
{},
'paper_issue_section_detail'
),
y:
{% url paper_issue_section_detail issue.pub_date.year %}
por lo que parece a quejarse cuando pase más de un solo argumento utilizando la etiqueta de plantilla 'url' - Me sale el mismo error con dos argumentos. ¿Hay una manera diferente de pasar varios argumentos? Intenté pasar argumentos de palabra clave y eso genera un error similar.
Por lo que vale la pena, la vista relacionada comienza así:
def issue_section_detail(request, year, month, day, slug):
¿Cómo puedo pasar más de un solo argumento a la etiqueta de plantilla url?
Eso suena genial, realmente no quiero cambiar el formato posible de la URL. Pero cuando hago issue.pub_date.month | date: "m", se pasa una cadena vacía a la URL/vista. –
Tienes razón, lo siento. Obviamente me equivoqué en la publicación original. Corregí la etiqueta 'url'. Debe usar 'issue.pub_date | date:" m "' en lugar de 'issue.pub_date.month | date:" m "'. El filtro 'date' opera en objetos' datetime' (el atributo pub_date) y no en enteros (el atributo pub_date.month). –
Doh, por supuesto, debería haberlo visto también. Gracias por la ayuda de Gregor. –