diff --git a/docs/intro/tutorial03.txt b/docs/intro/tutorial03.txt index 5b2bf0ccec..8f6061a14e 100644 --- a/docs/intro/tutorial03.txt +++ b/docs/intro/tutorial03.txt @@ -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 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\d+)/$', 'detail'), + (r'^polls/(?P\d+)/results/$', 'results'), + (r'^polls/(?P\d+)/vote/$', 'vote'), + ) + + urlpatterns += patterns('', + (r'^admin/', include(admin.site.urls)), + ) + Decoupling the URLconfs ======================= @@ -472,18 +493,20 @@ URLs within the app directory. Copy the file ``mysite/urls.py`` to ``polls/urls.py``. Then, change ``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 from django.conf.urls.defaults import * - - # ... + + from django.contrib import admin + admin.autodiscover() + urlpatterns = patterns('', (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 character) but has the trailing slash. Whenever Django encounters :func:`~django.conf.urls.defaults.include`, it chops off whatever part of the