Skip to content

Commit

Permalink
Fixed #14627 -- Made Tutorial 3 more explicit regarding the transform…
Browse files Browse the repository at this point in the history
…ations the URLconf undergoes in the final two sections, and gave an example of concatenating two patterns() in the process. Thanks to filmer for the report.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14472 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
Gabriel Hurley committed Nov 6, 2010
1 parent 63046ec commit f682484
Showing 1 changed file with 28 additions and 5 deletions.
33 changes: 28 additions & 5 deletions docs/intro/tutorial03.txt
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -454,6 +454,27 @@ first argument to :func:`~django.conf.urls.defaults.patterns`, like so::
This is functionally identical to the previous formatting. It's just a bit This is functionally identical to the previous formatting. It's just a bit
tidier. tidier.


Since you generally don't want the prefix for one app to be applied to every
callback in your URLconf, you can concatenate multiple
:func:`~django.conf.urls.defaults.patterns`. Your full ``mysite/urls.py`` might
now look like this::

from django.conf.urls.defaults import *

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('polls.views',
(r'^polls/$', 'index'),
(r'^polls/(?P<poll_id>\d+)/$', 'detail'),
(r'^polls/(?P<poll_id>\d+)/results/$', 'results'),
(r'^polls/(?P<poll_id>\d+)/vote/$', 'vote'),
)

urlpatterns += patterns('',
(r'^admin/', include(admin.site.urls)),
)

Decoupling the URLconfs Decoupling the URLconfs
======================= =======================


Expand All @@ -472,18 +493,20 @@ URLs within the app directory.


Copy the file ``mysite/urls.py`` to ``polls/urls.py``. Then, change Copy the file ``mysite/urls.py`` to ``polls/urls.py``. Then, change
``mysite/urls.py`` to remove the poll-specific URLs and insert an ``mysite/urls.py`` to remove the poll-specific URLs and insert an
:func:`~django.conf.urls.defaults.include`:: :func:`~django.conf.urls.defaults.include`, leaving you with::


# This also imports the include function # This also imports the include function
from django.conf.urls.defaults import * from django.conf.urls.defaults import *


# ... from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('', urlpatterns = patterns('',
(r'^polls/', include('polls.urls')), (r'^polls/', include('polls.urls')),
# ... (r'^admin/', include(admin.site.urls)),
) )


:func:`~django.conf.urls.defaults.include`, simply, references another URLconf. :func:`~django.conf.urls.defaults.include` simply references another URLconf.
Note that the regular expression doesn't have a ``$`` (end-of-string match Note that the regular expression doesn't have a ``$`` (end-of-string match
character) but has the trailing slash. Whenever Django encounters character) but has the trailing slash. Whenever Django encounters
:func:`~django.conf.urls.defaults.include`, it chops off whatever part of the :func:`~django.conf.urls.defaults.include`, it chops off whatever part of the
Expand Down

0 comments on commit f682484

Please sign in to comment.