/ / Django: No se encontró el reverso> {% url%} en la plantilla - django, url, argumentos, reverso

Django: reverso no encontrado> {% url%} en plantilla - django, url, argumentos, reverso

Este problema parece simple y se describe varias veces en SO, pero todavía no puedo entender por qué no funciona en mi caso.

Entonces, tengo un url declarado en urls.py

urlpatterns = patterns("",
url(r"^(?P<country>[-w]+)/$", CountryListView.as_view(), name="list_by_country"),)

y en mi modelo Estoy llamando a la url

<a href="{% url "list_by_country" country.country__name %}" >{{ country.country__name }}</a>

Sin embargo, estoy recibiendo la mensaje de error que la url no podía ser invertida

Reverse for "list_by_country" with arguments "(u"United Kingdom",)" and keyword arguments "{}" not found

¿Qué está causando el error inverso? ¿Los espacios en el argumento tal vez no están permitidos?


Respuestas

4 para la respuesta № 1

El problema es que "Reino Unido" no coincide con la expresión regular [-w]+. Si también desea emparejar espacios, debe cambiar su expresión regular a [-w ]+. Ejemplo:

url(r"^(?P<country>[-w ]+)/$", CountryListView.as_view(), name="list_by_country")

También puede optar por emparejar s en lugar de un solo carácter de espacio.