Fixed #26255 -- Fixed orphaned include() reference following tutorial reordering.

This commit is contained in:
Tim Graham 2016-03-09 12:18:21 -05:00
parent 602a38d87e
commit 4323676ea5
2 changed files with 19 additions and 23 deletions

View File

@ -298,6 +298,20 @@ an :func:`~django.conf.urls.include` in the ``urlpatterns`` list, so you have:
url(r'^admin/', admin.site.urls), url(r'^admin/', admin.site.urls),
] ]
The :func:`~django.conf.urls.include` function allows referencing other
URLconfs. Note that the regular expressions for the
:func:`~django.conf.urls.include` function doesn't have a ``$`` (end-of-string
match character) but rather a trailing slash. Whenever Django encounters
:func:`~django.conf.urls.include`, it chops off whatever part of the URL
matched up to that point and sends the remaining string to the included URLconf
for further processing.
The idea behind :func:`~django.conf.urls.include` is to make it easy to
plug-and-play URLs. Since polls are in their own URLconf
(``polls/urls.py``), they can be placed under "/polls/", or under
"/fun_polls/", or under "/content/polls/", or any other path root, and the
app will still work.
.. admonition:: When to use :func:`~django.conf.urls.include()` .. admonition:: When to use :func:`~django.conf.urls.include()`
You should always use ``include()`` when you include other URL patterns. You should always use ``include()`` when you include other URL patterns.

View File

@ -106,29 +106,11 @@ placeholder results and voting pages.
When somebody requests a page from your website -- say, "/polls/34/", Django When somebody requests a page from your website -- say, "/polls/34/", Django
will load the ``mysite.urls`` Python module because it's pointed to by the will load the ``mysite.urls`` Python module because it's pointed to by the
:setting:`ROOT_URLCONF` setting. It finds the variable named ``urlpatterns`` :setting:`ROOT_URLCONF` setting. It finds the variable named ``urlpatterns``
and traverses the regular expressions in order. The and traverses the regular expressions in order. After finding the match at
:func:`~django.conf.urls.include` functions we are using simply reference ``'^polls/'``, it strips off the matching text (``"polls/"``) and sends the
other URLconfs. Note that the regular expressions for the remaining text -- ``"34/"`` -- to the 'polls.urls' URLconf for further
:func:`~django.conf.urls.include` functions don't have a ``$`` (end-of-string processing. There it matches ``r'^(?P<question_id>[0-9]+)/$'``, resulting in a
match character) but rather a trailing slash. Whenever Django encounters call to the ``detail()`` view like so::
:func:`~django.conf.urls.include`, it chops off whatever part of the URL
matched up to that point and sends the remaining string to the included
URLconf for further processing.
The idea behind :func:`~django.conf.urls.include` is to make it easy to
plug-and-play URLs. Since polls are in their own URLconf
(``polls/urls.py``), they can be placed under "/polls/", or under
"/fun_polls/", or under "/content/polls/", or any other path root, and the
app will still work.
Here's what happens if a user goes to "/polls/34/" in this system:
* Django will find the match at ``'^polls/'``
* Then, Django will strip off the matching text (``"polls/"``) and send the
remaining text -- ``"34/"`` -- to the 'polls.urls' URLconf for
further processing which matches ``r'^(?P<question_id>[0-9]+)/$'`` resulting in a
call to the ``detail()`` view like so::
detail(request=<HttpRequest object>, question_id='34') detail(request=<HttpRequest object>, question_id='34')