urls tutorial template python django url django-urls

python - tutorial - django views



Cómo generar urls en django (3)

En el lenguaje de plantilla de Django, puede usar {% url [viewname] [args] %} para generar una URL a una vista específica con parámetros. ¿Cómo puede hacer programáticamente lo mismo en el código de Python?

Lo que necesito es crear una lista de elementos de menú donde cada elemento tenga nombre, URL y una bandera activa (ya sea la página actual o no). Esto se debe a que será mucho más limpio hacer esto en Python que el lenguaje de plantilla.


Estoy usando dos enfoques diferentes en mi models.py . El primero es el decorador permalink :

from django.db.models import permalink def get_absolute_url(self): """Construct the absolute URL for this Item.""" return (''project.app.views.view_name'', [str(self.id)]) get_absolute_url = permalink(get_absolute_url)

También puede llamar al reverse directamente:

from django.core.urlresolvers import reverse def get_absolute_url(self): """Construct the absolute URL for this Item.""" return reverse(''project.app.views.view_name'', None, [str(self.id)])


Si necesita usar algo similar a la etiqueta de plantilla {% url %} en su código, Django proporciona django.core.urlresolvers.reverse() . La función reverse tiene la siguiente firma:

reverse(viewname, urlconf=None, args=None, kwargs=None)

https://docs.djangoproject.com/en/dev/ref/urlresolvers/


Tenga en cuenta que el uso de reverse() requiere que su módulo urlconf esté 100% libre de errores y se pueda procesar - no ViewDoesNotExist errores ViewDoesNotExist o más, u obtiene la temida excepción NoReverseMatch (los errores en las plantillas generalmente fallan silenciosamente).