Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed several bugs in docs/url_dispatch.txt, and made several clarifi…

…cations

git-svn-id: http://code.djangoproject.com/svn/django/trunk@1453 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 501b06c7b497008272ce15e47224cca982d529f2 1 parent 0cb2a00
Adrian Holovaty adrianholovaty authored
Showing with 29 additions and 17 deletions.
  1. +29 −17 docs/url_dispatch.txt
46 docs/url_dispatch.txt
View
@@ -56,10 +56,10 @@ Here's a sample URLconf::
from django.conf.urls.defaults import *
urlpatterns = patterns('',
- (r'^/articles/2003/$', 'news.views.special_case_2003'),
- (r'^/articles/(?P<year>\d{4})/$', 'news.views.year_archive'),
- (r'^/articles/(?P<year>\d{4})/(?P<month>\d{2})/$', 'news.views.month_archive'),
- (r'^/articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d+)/$', 'news.views.article_detail'),
+ (r'^articles/2003/$', 'news.views.special_case_2003'),
+ (r'^articles/(?P<year>\d{4})/$', 'news.views.year_archive'),
+ (r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', 'news.views.month_archive'),
+ (r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d+)/$', 'news.views.article_detail'),
)
Notes:
@@ -71,6 +71,9 @@ Notes:
where ``name`` is the name for that value and ``pattern`` is some pattern
to match.
+ * There's no need to add a leading slash, because every URL has that. For
+ example, it's ``^articles``, not ``^/articles``.
+
* The ``"r"`` in front of each regular expression string is optional but
recommended. It tells Python that a string is "raw" -- that nothing in
the string should be escaped. See `Dive Into Python's explanation`_.
@@ -168,7 +171,7 @@ Each captured argument is sent to the view as a plain Python string, regardless
of what sort of match the regular expression makes. For example, in this
URLconf::
- (r'^/articles/(?P<year>\d{4})/$', 'news.views.year_archive'),
+ (r'^articles/(?P<year>\d{4})/$', 'news.views.year_archive'),
...the ``year`` argument to ``news.views.year_archive()`` will be a string, not
an integer, even though the ``\d{4}`` will only match integer strings.
@@ -178,8 +181,8 @@ Here's an example URLconf and view::
# URLconf
urlpatterns = patterns('',
- (r'^/blog/$', 'blog.views.page'),
- (r'^/blog/page(?P<num>\d+)/$', 'blog.views.page'),
+ (r'^blog/$', 'blog.views.page'),
+ (r'^blog/page(?P<num>\d+)/$', 'blog.views.page'),
)
# View (in blog/views.py)
@@ -209,9 +212,9 @@ Here's the example URLconf from the `Django overview`_::
from django.conf.urls.defaults import *
urlpatterns = patterns('',
- (r'^/articles/(?P<year>\d{4})/$', 'myproject.news.views.year_archive'),
- (r'^/articles/(?P<year>\d{4})/(?P<month>\d{2})/$', 'myproject.news.views.month_archive'),
- (r'^/articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d+)/$', 'myproject.news.views.article_detail'),
+ (r'^articles/(?P<year>\d{4})/$', 'myproject.news.views.year_archive'),
+ (r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', 'myproject.news.views.month_archive'),
+ (r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d+)/$', 'myproject.news.views.article_detail'),
)
In this example, each view has a common prefix -- ``"myproject.news.views"``.
@@ -224,9 +227,9 @@ With this in mind, the above example can be written more concisely as::
from django.conf.urls.defaults import *
urlpatterns = patterns('myproject.news.views',
- (r'^/articles/(?P<year>\d{4})/$', 'year_archive'),
- (r'^/articles/(?P<year>\d{4})/(?P<month>\d{2})/$', 'month_archive'),
- (r'^/articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d+)/$', 'article_detail'),
+ (r'^articles/(?P<year>\d{4})/$', 'year_archive'),
+ (r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', 'month_archive'),
+ (r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d+)/$', 'article_detail'),
)
Note that you don't put a trailing dot (``"."``) in the prefix. Django puts
@@ -252,8 +255,19 @@ number of other URLconfs::
(r'^rss/', include('django.conf.urls.rss')),
)
-Note that an included URLconf receives any captured parameters from parent
-URLconfs, so the following example is valid::
+Note that the regular expressions in this example don't have a ``$``
+(end-of-string match character) but do include a trailing slash. Whenever
+Django encounters ``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.
+
+.. _`Django website`: http://www.djangoproject.com/
+
+Captured parameters
+-------------------
+
+An included URLconf receives any captured parameters from parent URLconfs, so
+the following example is valid::
# In settings/urls/main.py
urlpatterns = patterns('',
@@ -269,8 +283,6 @@ URLconfs, so the following example is valid::
In the above example, the captured ``"username"`` variable is passed to the
included URLconf, as expected.
-.. _`Django website`: http://www.djangoproject.com/
-
Passing extra options to view functions
=======================================
Please sign in to comment.
Something went wrong with that request. Please try again.