Skip to content

Commit

Permalink
Fixed #7216 -- Added a description on how to use named URLs with a pe…
Browse files Browse the repository at this point in the history
…rmalink. Thanks, masklinn.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@7678 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
freakboy3742 committed Jun 17, 2008
1 parent cd0f7b9 commit 6d242cc
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions docs/model-api.txt
Expand Up @@ -2005,6 +2005,36 @@ In this way, you're tying the model's absolute URL to the view that is used
to display it, without repeating the URL information anywhere. You can still
use the ``get_absolute_url`` method in templates, as before.

In some cases, such as the use of generic views or the re-use of
custom views for multiple models, specifying the view function may
confuse the reverse URL matcher (because multiple patterns point to
the same view).

For that problem, Django has **named URL patterns**. Using a named
URL patter, it's possible to give a name to a pattern, and then
reference the name, rather than the view function. A named URL
pattern is defined by replacing the pattern tuple by a call to
the ``url`` function)::

from django.conf.urls.defaults import *

url(r'^people/(\d+)/$',
'django.views.generic.list_detail.object_detail',
name='people_view'),

and then using that name to perform the reverse URL resolution instead
of the view name::

from django.db.models import permalink

def get_absolute_url(self):
return ('people_view', [str(self.id)])
get_absolute_url = permalink(get_absolute_url)

More details on named URL patterns can be found in `URL dispatch documentation`_.

.. _URL dispatch: ../url_dispatch/#naming-url-patterns

Executing custom SQL
--------------------

Expand Down

0 comments on commit 6d242cc

Please sign in to comment.