Tengo una aplicación antigua de Django que usa la etiqueta de plantilla de URL de esta manera:
{% url 'smart_service.views.view_name' %} Hasta ahora funcionó de maravilla, pero después de la actualización a la versión 1.10 ya nada funciona y cualquier uso que se haga de esa forma devuelve NoReverseMatch .
Puedo resolver este problema poniendo app_name = 'smart_service' en mi archivo urls.py y cambiando la etiqueta de URL a esto:
{% url 'smart_service:view_name' %}Esta es una tarea tediosa y muy propensa a errores, me gustaría evitarla a menos que sea estrictamente necesario.
¿Se ha desaprobado el primer caso de uso? Si no, ¿por qué ya no funciona? ¿Hay ventajas específicas en el uso de uno u otro?
No puede evitar este cambio cuando actualiza a Django 1.10+.
La compatibilidad con la inversión de direcciones URL utilizando la ruta punteada de Python quedó obsoleta en Django 1.8 y se eliminó en 1.10 .
Debe cambiar sus etiquetas {% url %} para usar el nombre de la vista, por ejemplo
{% url 'view_name' %} Si agrega un espacio de nombres a su urls.py , por ejemplo, app_name = 'smart_service' , debe incluir el espacio de nombres en la etiqueta {% url %} .
{% url 'smart_service:view_name' %}