How to generate urls in django How to generate urls in django python python

How to generate urls in django


If you need to use something similar to the {% url %} template tag in your code, Django provides the django.core.urlresolvers.reverse(). The reverse function has the following signature:

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

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

At the time of this edit the import is django.urls import reverse


I'm using two different approaches in my models.py. The first is the permalink decorator:

from django.db.models import permalinkdef 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)

You can also call reverse directly:

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


Be aware that using reverse() requires that your urlconf module is 100% error free and can be processed - iow no ViewDoesNotExist errors or so, or you get the dreaded NoReverseMatch exception (errors in templates usually fail silently resulting in None).