diff options
| author | Tim Graham <timograham@gmail.com> | 2014-04-01 20:46:34 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-04-03 07:28:10 -0400 |
| commit | d73d0e071c1b4c86d57994a0ab55a74cfe80cdf5 (patch) | |
| tree | f36eebaf1cdd8bd07503b3a538e7d875ff8d29b4 /docs/ref | |
| parent | e6ced2bb086396b57601d04ad5b3ba347d1eb785 (diff) | |
Fixed #22218 -- Deprecated django.conf.urls.patterns.
Thanks Carl Meyer for the suggestion and Alex Gaynor and Carl for reviews.
Diffstat (limited to 'docs/ref')
| -rw-r--r-- | docs/ref/class-based-views/base.txt | 19 | ||||
| -rw-r--r-- | docs/ref/class-based-views/generic-date-based.txt | 42 | ||||
| -rw-r--r-- | docs/ref/class-based-views/generic-display.txt | 12 | ||||
| -rw-r--r-- | docs/ref/class-based-views/index.txt | 6 | ||||
| -rw-r--r-- | docs/ref/contrib/admin/index.txt | 38 | ||||
| -rw-r--r-- | docs/ref/contrib/flatpages.txt | 30 | ||||
| -rw-r--r-- | docs/ref/contrib/formtools/form-wizard.txt | 28 | ||||
| -rw-r--r-- | docs/ref/contrib/gis/tutorial.txt | 6 | ||||
| -rw-r--r-- | docs/ref/contrib/sitemaps.txt | 38 | ||||
| -rw-r--r-- | docs/ref/contrib/staticfiles.txt | 7 | ||||
| -rw-r--r-- | docs/ref/contrib/syndication.txt | 18 | ||||
| -rw-r--r-- | docs/ref/urls.txt | 49 | ||||
| -rw-r--r-- | docs/ref/views.txt | 7 |
13 files changed, 169 insertions, 131 deletions
diff --git a/docs/ref/class-based-views/base.txt b/docs/ref/class-based-views/base.txt index fb98f9d80e..e8f5271e97 100644 --- a/docs/ref/class-based-views/base.txt +++ b/docs/ref/class-based-views/base.txt @@ -39,13 +39,13 @@ View **Example urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from myapp.views import MyView - urlpatterns = patterns('', + urlpatterns = [ url(r'^mine/$', MyView.as_view(), name='my-view'), - ) + ] **Attributes** @@ -131,13 +131,13 @@ TemplateView **Example urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from myapp.views import HomePageView - urlpatterns = patterns('', + urlpatterns = [ url(r'^$', HomePageView.as_view(), name='home'), - ) + ] **Context** @@ -192,17 +192,16 @@ RedirectView **Example urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from django.views.generic.base import RedirectView from article.views import ArticleCounterRedirectView, ArticleDetail - urlpatterns = patterns('', - + urlpatterns = [ url(r'^counter/(?P<pk>\d+)/$', ArticleCounterRedirectView.as_view(), name='article-counter'), url(r'^details/(?P<pk>\d+)/$', ArticleDetail.as_view(), name='article-detail'), url(r'^go-to-django/$', RedirectView.as_view(url='http://djangoproject.com'), name='go-to-django'), - ) + ] **Attributes** diff --git a/docs/ref/class-based-views/generic-date-based.txt b/docs/ref/class-based-views/generic-date-based.txt index bf70f2313b..9d6d447052 100644 --- a/docs/ref/class-based-views/generic-date-based.txt +++ b/docs/ref/class-based-views/generic-date-based.txt @@ -65,16 +65,16 @@ ArchiveIndexView **Example myapp/views.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from django.views.generic.dates import ArchiveIndexView from myapp.models import Article - urlpatterns = patterns('', + urlpatterns = [ url(r'^archive/$', ArchiveIndexView.as_view(model=Article, date_field="pub_date"), name="article_archive"), - ) + ] **Example myapp/article_archive.html**: @@ -166,15 +166,15 @@ YearArchiveView **Example myapp/urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from myapp.views import ArticleYearArchiveView - urlpatterns = patterns('', + urlpatterns = [ url(r'^(?P<year>\d{4})/$', ArticleYearArchiveView.as_view(), name="article_year_archive"), - ) + ] **Example myapp/article_archive_year.html**: @@ -261,11 +261,11 @@ MonthArchiveView **Example myapp/urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from myapp.views import ArticleMonthArchiveView - urlpatterns = patterns('', + urlpatterns = [ # Example: /2012/aug/ url(r'^(?P<year>\d{4})/(?P<month>[-\w]+)/$', ArticleMonthArchiveView.as_view(), @@ -274,7 +274,7 @@ MonthArchiveView url(r'^(?P<year>\d{4})/(?P<month>\d+)/$', ArticleMonthArchiveView.as_view(month_format='%m'), name="archive_month_numeric"), - ) + ] **Example myapp/article_archive_month.html**: @@ -355,16 +355,16 @@ WeekArchiveView **Example myapp/urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from myapp.views import ArticleWeekArchiveView - urlpatterns = patterns('', + urlpatterns = [ # Example: /2012/week/23/ url(r'^(?P<year>\d{4})/week/(?P<week>\d+)/$', ArticleWeekArchiveView.as_view(), name="archive_week"), - ) + ] **Example myapp/article_archive_week.html**: @@ -469,16 +469,16 @@ DayArchiveView **Example myapp/urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from myapp.views import ArticleDayArchiveView - urlpatterns = patterns('', + urlpatterns = [ # Example: /2012/nov/10/ url(r'^(?P<year>\d{4})/(?P<month>[-\w]+)/(?P<day>\d+)/$', ArticleDayArchiveView.as_view(), name="archive_day"), - ) + ] **Example myapp/article_archive_day.html**: @@ -543,15 +543,15 @@ TodayArchiveView **Example myapp/urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from myapp.views import ArticleTodayArchiveView - urlpatterns = patterns('', + urlpatterns = [ url(r'^today/$', ArticleTodayArchiveView.as_view(), name="archive_today"), - ) + ] .. admonition:: Where is the example template for ``TodayArchiveView``? @@ -593,14 +593,14 @@ DateDetailView **Example myapp/urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from django.views.generic.dates import DateDetailView - urlpatterns = patterns('', + urlpatterns = [ url(r'^(?P<year>\d+)/(?P<month>[-\w]+)/(?P<day>\d+)/(?P<pk>\d+)/$', DateDetailView.as_view(model=Article, date_field="pub_date"), name="archive_date_detail"), - ) + ] **Example myapp/article_detail.html**: diff --git a/docs/ref/class-based-views/generic-display.txt b/docs/ref/class-based-views/generic-display.txt index 24006d48d3..1ca8125501 100644 --- a/docs/ref/class-based-views/generic-display.txt +++ b/docs/ref/class-based-views/generic-display.txt @@ -54,13 +54,13 @@ DetailView **Example myapp/urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from article.views import ArticleDetailView - urlpatterns = patterns('', + urlpatterns = [ url(r'^(?P<slug>[-_\w]+)/$', ArticleDetailView.as_view(), name='article-detail'), - ) + ] **Example myapp/article_detail.html**: @@ -123,13 +123,13 @@ ListView **Example myapp/urls.py**:: - from django.conf.urls import patterns, url + from django.conf.urls import url from article.views import ArticleListView - urlpatterns = patterns('', + urlpatterns = [ url(r'^$', ArticleListView.as_view(), name='article-list'), - ) + ] **Example myapp/article_list.html**: diff --git a/docs/ref/class-based-views/index.txt b/docs/ref/class-based-views/index.txt index 821edc0874..81d5c560f9 100644 --- a/docs/ref/class-based-views/index.txt +++ b/docs/ref/class-based-views/index.txt @@ -25,9 +25,9 @@ a thread-safe operation). A class-based view is deployed into a URL pattern using the :meth:`~django.views.generic.base.View.as_view()` classmethod:: - urlpatterns = patterns('', - (r'^view/$', MyView.as_view(size=42)), - ) + urlpatterns = [ + url(r'^view/$', MyView.as_view(size=42)), + ] .. admonition:: Thread safety with view arguments diff --git a/docs/ref/contrib/admin/index.txt b/docs/ref/contrib/admin/index.txt index 7ebe90060b..d999b11efe 100644 --- a/docs/ref/contrib/admin/index.txt +++ b/docs/ref/contrib/admin/index.txt @@ -1395,9 +1395,9 @@ templates used by the :class:`ModelAdmin` views: class MyModelAdmin(admin.ModelAdmin): def get_urls(self): urls = super(MyModelAdmin, self).get_urls() - my_urls = patterns('', - (r'^my_view/$', self.my_view) - ) + my_urls = [ + url(r'^my_view/$', self.my_view), + ] return my_urls + urls def my_view(self, request): @@ -1432,9 +1432,9 @@ templates used by the :class:`ModelAdmin` views: class MyModelAdmin(admin.ModelAdmin): def get_urls(self): urls = super(MyModelAdmin, self).get_urls() - my_urls = patterns('', - (r'^my_view/$', self.admin_site.admin_view(self.my_view)) - ) + my_urls = [ + url(r'^my_view/$', self.admin_site.admin_view(self.my_view)) + ] return my_urls + urls Notice the wrapped view in the fifth line above:: @@ -2434,23 +2434,23 @@ In this example, we register the default ``AdminSite`` instance ``django.contrib.admin.site`` at the URL ``/admin/`` :: # urls.py - from django.conf.urls import patterns, include + from django.conf.urls import include, url from django.contrib import admin - urlpatterns = patterns('', - (r'^admin/', include(admin.site.urls)), - ) + urlpatterns = [ + url(r'^admin/', include(admin.site.urls)), + ] In this example, we register the ``AdminSite`` instance ``myproject.admin.admin_site`` at the URL ``/myadmin/`` :: # urls.py - from django.conf.urls import patterns, include + from django.conf.urls import include, url from myproject.admin import admin_site - urlpatterns = patterns('', - (r'^myadmin/', include(admin_site.urls)), - ) + urlpatterns = [ + url(r'^myadmin/', include(admin_site.urls)), + ] Note that you may not want autodiscovery of ``admin`` modules when using your own ``AdminSite`` instance since you will likely be importing all the per-app @@ -2472,13 +2472,13 @@ separate versions of the admin site -- using the ``AdminSite`` instances respectively:: # urls.py - from django.conf.urls import patterns, include + from django.conf.urls import include, url from myproject.admin import basic_site, advanced_site - urlpatterns = patterns('', - (r'^basic-admin/', include(basic_site.urls)), - (r'^advanced-admin/', include(advanced_site.urls)), - ) + urlpatterns = [ + url(r'^basic-admin/', include(basic_site.urls)), + url(r'^advanced-admin/', include(advanced_site.urls)), + ] ``AdminSite`` instances take a single argument to their constructor, their name, which can be anything you like. This argument becomes the prefix to the diff --git a/docs/ref/contrib/flatpages.txt b/docs/ref/contrib/flatpages.txt index be9fe0c636..b280e0ddc4 100644 --- a/docs/ref/contrib/flatpages.txt +++ b/docs/ref/contrib/flatpages.txt @@ -46,9 +46,9 @@ Then either: 3. Add an entry in your URLconf. For example:: - urlpatterns = patterns('', - (r'^pages/', include('django.contrib.flatpages.urls')), - ) + urlpatterns = [ + url(r'^pages/', include('django.contrib.flatpages.urls')), + ] or: @@ -73,17 +73,19 @@ Using the URLconf There are several ways to include the flat pages in your URLconf. You can dedicate a particular path to flat pages:: - urlpatterns = patterns('', - (r'^pages/', include('django.contrib.flatpages.urls')), - ) + urlpatterns = [ + url(r'^pages/', include('django.contrib.flatpages.urls')), + ] You can also set it up as a "catchall" pattern. In this case, it is important to place the pattern at the end of the other urlpatterns:: + from django.contrib.flatpages import views + # Your other patterns here - urlpatterns += patterns('django.contrib.flatpages.views', - (r'^(?P<url>.*/)$', 'flatpage'), - ) + urlpatterns += [ + url(r'^(?P<url>.*/)$', views.flatpage), + ] .. warning:: @@ -95,10 +97,12 @@ Another common setup is to use flat pages for a limited set of known pages and to hard code the urls, so you can reference them with the :ttag:`url` template tag:: - urlpatterns += patterns('django.contrib.flatpages.views', - url(r'^about-us/$', 'flatpage', {'url': '/about-us/'}, name='about'), - url(r'^license/$', 'flatpage', {'url': '/license/'}, name='license'), - ) + from django.contrib.flatpages import views + + urlpatterns += [ + url(r'^about-us/$', views.flatpage, {'url': '/about-us/'}, name='about'), + url(r'^license/$', views.flatpage, {'url': '/license/'}, name='license'), + ] Using the middleware -------------------- diff --git a/docs/ref/contrib/formtools/form-wizard.txt b/docs/ref/contrib/formtools/form-wizard.txt index 2934893776..054c027ea8 100644 --- a/docs/ref/contrib/formtools/form-wizard.txt +++ b/docs/ref/contrib/formtools/form-wizard.txt @@ -251,14 +251,14 @@ deploy the new :class:`WizardView` object at a URL in the ``urls.py``. The wizard's ``as_view()`` method takes a list of your :class:`~django.forms.Form` classes as an argument during instantiation:: - from django.conf.urls import patterns + from django.conf.urls import url from myapp.forms import ContactForm1, ContactForm2 from myapp.views import ContactWizard - urlpatterns = patterns('', - (r'^contact/$', ContactWizard.as_view([ContactForm1, ContactForm2])), - ) + urlpatterns = [ + url(r'^contact/$', ContactWizard.as_view([ContactForm1, ContactForm2])), + ] You can also pass the form list as a class attribute named ``form_list``:: @@ -311,9 +311,9 @@ Here's what the view code might look like:: The ``urls.py`` file would contain something like:: - urlpatterns = patterns('', - (r'^checkout/$', OrderWizard.as_view(FORMS, condition_dict={'cc': pay_by_credit_card})), - ) + urlpatterns = [ + url(r'^checkout/$', OrderWizard.as_view(FORMS, condition_dict={'cc': pay_by_credit_card})), + ] The ``condition_dict`` can be passed as attribute for the ``as_view()` method or as a class attribute named ``condition_dict``:: @@ -673,18 +673,18 @@ We define our wizard in a ``views.py``:: We need to add the ``ContactWizard`` to our ``urls.py`` file:: - from django.conf.urls import patterns + from django.conf.urls import url from myapp.forms import ContactForm1, ContactForm2 from myapp.views import ContactWizard, show_message_form_condition contact_forms = [ContactForm1, ContactForm2] - urlpatterns = patterns('', - (r'^contact/$', ContactWizard.as_view(contact_forms, + urlpatterns = [ + url(r'^contact/$', ContactWizard.as_view(contact_forms, condition_dict={'1': show_message_form_condition} )), - ) + ] As you can see, we defined a ``show_message_form_condition`` next to our :class:`WizardView` subclass and added a ``condition_dict`` argument to the @@ -728,7 +728,7 @@ Additionally you have to pass two more arguments to the Example code for the changed ``urls.py`` file:: - from django.conf.urls import url, patterns + from django.conf.urls import url from myapp.forms import ContactForm1, ContactForm2 from myapp.views import ContactWizard @@ -741,10 +741,10 @@ Example code for the changed ``urls.py`` file:: contact_wizard = ContactWizard.as_view(named_contact_forms, url_name='contact_step', done_step_name='finished') - urlpatterns = patterns('', + urlpatterns = [ url(r'^contact/(?P<step>.+)/$', contact_wizard, name='contact_step'), url(r'^contact/$', contact_wizard, name='contact'), - ) + ] Advanced ``NamedUrlWizardView`` methods ======================================= diff --git a/docs/ref/contrib/gis/tutorial.txt b/docs/ref/contrib/gis/tutorial.txt index 24470e8227..fee293728e 100644 --- a/docs/ref/contrib/gis/tutorial.txt +++ b/docs/ref/contrib/gis/tutorial.txt @@ -730,12 +730,12 @@ Let's dive right in. Create a file called ``admin.py`` inside the Next, edit your ``urls.py`` in the ``geodjango`` application folder as follows:: - from django.conf.urls import patterns, url, include + from django.conf.urls import url, include from django.contrib.gis import admin - urlpatterns = patterns('', + urlpatterns = [ url(r'^admin/', include(admin.site.urls)), - ) + ] Start up the Django development server: diff --git a/docs/ref/contrib/sitemaps.txt b/docs/ref/contrib/sitemaps.txt index fefe90a420..12ed61b97a 100644 --- a/docs/ref/contrib/sitemaps.txt +++ b/docs/ref/contrib/sitemaps.txt @@ -265,7 +265,7 @@ Example Here's an example of a :doc:`URLconf </topics/http/urls>` using both:: - from django.conf.urls import patterns + from django.conf.urls import url from django.contrib.sitemaps import FlatPageSitemap, GenericSitemap from blog.models import Entry @@ -279,13 +279,13 @@ Here's an example of a :doc:`URLconf </topics/http/urls>` using both:: 'blog': GenericSitemap(info_dict, priority=0.6), } - urlpatterns = patterns('', + urlpatterns = [ # some generic view using info_dict # ... # the sitemap - (r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}) - ) + url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}), + ] .. _URLconf: ../url_dispatch/ @@ -313,20 +313,20 @@ the sitemap. For example:: return reverse(item) # urls.py - from django.conf.urls import patterns, url + from django.conf.urls import url from .sitemaps import StaticViewSitemap sitemaps = { 'static': StaticViewSitemap, } - urlpatterns = patterns('', + urlpatterns = [ url(r'^$', 'views.main', name='main'), url(r'^about/$', 'views.about', name='about'), url(r'^license/$', 'views.license', name='license'), # ... url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}) - ) + ] Creating a sitemap index @@ -345,10 +345,12 @@ references individual sitemap files, one per each section defined in your Here's what the relevant URLconf lines would look like for the example above:: - urlpatterns = patterns('django.contrib.sitemaps.views', - (r'^sitemap\.xml$', 'index', {'sitemaps': sitemaps}), - (r'^sitemap-(?P<section>.+)\.xml$', 'sitemap', {'sitemaps': sitemaps}), - ) + from django.contrib.sitemaps import views + + urlpatterns = [ + url(r'^sitemap\.xml$', views.index, {'sitemaps': sitemaps}), + url(r'^sitemap-(?P<section>.+)\.xml$', views.sitemap, {'sitemaps': sitemaps}), + ] This will automatically generate a :file:`sitemap.xml` file that references both :file:`sitemap-flatpages.xml` and :file:`sitemap-blog.xml`. The @@ -366,14 +368,14 @@ with a caching decorator -- you must name your sitemap view and pass from django.contrib.sitemaps import views as sitemaps_views from django.views.decorators.cache import cache_page - urlpatterns = patterns('', + urlpatterns = [ url(r'^sitemap\.xml$', cache_page(86400)(sitemaps_views.index), {'sitemaps': sitemaps, 'sitemap_url_name': 'sitemaps'}), url(r'^sitemap-(?P<section>.+)\.xml$', cache_page(86400)(sitemaps_views.sitemap), {'sitemaps': sitemaps}, name='sitemaps'), - ) + ] Template customization @@ -383,16 +385,18 @@ If you wish to use a different template for each sitemap or sitemap index available on your site, you may specify it by passing a ``template_name`` parameter to the ``sitemap`` and ``index`` views via the URLconf:: - urlpatterns = patterns('django.contrib.sitemaps.views', - (r'^custom-sitemap\.xml$', 'index', { + from django.contrib.sitemaps import views + + urlpatterns = [ + url(r'^custom-sitemap\.xml$', views.index, { 'sitemaps': sitemaps, 'template_name': 'custom_sitemap.html' }), - (r'^custom-sitemap-(?P<section>.+)\.xml$', 'sitemap', { + url(r'^custom-sitemap-(?P<section>.+)\.xml$', views.sitemap, { 'sitemaps': sitemaps, 'template_name': 'custom_sitemap.html' }), - ) + ] These views return :class:`~django.template.response.TemplateResponse` diff --git a/docs/ref/contrib/staticfiles.txt b/docs/ref/contrib/staticfiles.txt index 961abf5c5d..8f7ba0a6fe 100644 --- a/docs/ref/contrib/staticfiles.txt +++ b/docs/ref/contrib/staticfiles.txt @@ -445,11 +445,12 @@ local development server, add the following snippet to the end of your primary URL configuration:: from django.conf import settings + from django.contrib.staticfiles import views if settings.DEBUG: - urlpatterns += patterns('django.contrib.staticfiles.views', - url(r'^static/(?P<path>.*)$', 'serve'), - ) + urlpatterns += [ + url(r'^static/(?P<path>.*)$', views.serve), + ] Note, the beginning of the pattern (``r'^static/'``) should be your :setting:`STATIC_URL` setting. diff --git a/docs/ref/contrib/syndication.txt b/docs/ref/contrib/syndication.txt index 61adfef35d..b2ebf40e61 100644 --- a/docs/ref/contrib/syndication.txt +++ b/docs/ref/contrib/syndication.txt @@ -77,14 +77,14 @@ a feed of the latest five news items:: To connect a URL to this feed, put an instance of the Feed object in your :doc:`URLconf </topics/http/urls>`. For example:: - from django.conf.urls import patterns + from django.conf.urls import url from myproject.feeds import LatestEntriesFeed - urlpatterns = patterns('', + urlpatterns = [ # ... - (r'^latest/feed/$', LatestEntriesFeed()), + url(r'^latest/feed/$', LatestEntriesFeed()), # ... - ) + ] Note: @@ -366,15 +366,15 @@ Here's a full example:: And the accompanying URLconf:: - from django.conf.urls import patterns + from django.conf.urls import url from myproject.feeds import RssSiteNewsFeed, AtomSiteNewsFeed - urlpatterns = patterns('', + urlpatterns = [ # ... - (r'^sitenews/rss/$', RssSiteNewsFeed()), - (r'^sitenews/atom/$', AtomSiteNewsFeed()), + url(r'^sitenews/rss/$', RssSiteNewsFeed()), + url(r'^sitenews/atom/$', AtomSiteNewsFeed()), # ... - ) + ] Feed class reference -------------------- diff --git a/docs/ref/urls.txt b/docs/ref/urls.txt index 1806e1980f..47ef488afc 100644 --- a/docs/ref/urls.txt +++ b/docs/ref/urls.txt @@ -9,11 +9,42 @@ patterns() .. function:: patterns(prefix, pattern_description, ...) +.. deprecated:: 1.8 + + ``urlpatterns`` should be a plain list of :func:`django.conf.urls.url` + instances instead. + A function that takes a prefix, and an arbitrary number of URL patterns, and returns a list of URL patterns in the format Django needs. -The first argument to ``patterns()`` is a string ``prefix``. See -:ref:`The view prefix <urlpatterns-view-prefix>`. +The first argument to ``patterns()`` is a string ``prefix``. Here's the example +URLconf from the :doc:`Django overview </intro/overview>`:: + + from django.conf.urls import patterns, url + + urlpatterns = patterns('', + url(r'^articles/(\d{4})/$', 'news.views.year_archive'), + url(r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'), + url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'), + ) + +In this example, each view has a common prefix -- ``'news.views'``. +Instead of typing that out for each entry in ``urlpatterns``, you can use the +first argument to the ``patterns()`` function to specify a prefix to apply to +each view function. + +With this in mind, the above example can be written more concisely as:: + + from django.conf.urls import patterns, url + + urlpatterns = patterns('news.views', + url(r'^articles/(\d{4})/$', 'year_archive'), + url(r'^articles/(\d{4})/(\d{2})/$', 'month_archive'), + url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'article_detail'), + ) + +Note that you don't put a trailing dot (``"."``) in the prefix. Django puts +that in automatically. The remaining arguments should be tuples in this format:: @@ -54,23 +85,21 @@ Helper function to return a URL pattern for serving files in debug mode:: from django.conf import settings from django.conf.urls.static import static - urlpatterns = patterns('', + urlpatterns = [ # ... the rest of your URLconf goes here ... - ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) url() ----- .. function:: url(regex, view, kwargs=None, name=None, prefix='') -You can use the ``url()`` function, instead of a tuple, as an argument to -``patterns()``. This is convenient if you want to specify a name without the -optional extra arguments dictionary. For example:: +``urlpatterns`` should be a list of ``url()`` instances. For example:: - urlpatterns = patterns('', + urlpatterns = [ url(r'^index/$', index_view, name="main-view"), ... - ) + ] This function takes five arguments, most of which are optional:: @@ -107,7 +136,7 @@ include() :type namespace: string :arg app_name: Application namespace for the URL entries being included :type app_name: string - :arg pattern_list: Iterable of URL entries as returned by :func:`patterns` + :arg pattern_list: Iterable of :func:`django.conf.urls.url` instances :arg app_namespace: Application namespace for the URL entries being included :type app_namespace: string :arg instance_namespace: Instance namespace for the URL entries being included diff --git a/docs/ref/views.txt b/docs/ref/views.txt index 8c9c3e3ed8..c5d36abe0a 100644 --- a/docs/ref/views.txt +++ b/docs/ref/views.txt @@ -26,15 +26,16 @@ built-in handling for user-uploaded files, but you can have Django serve your :setting:`MEDIA_ROOT` by appending something like this to your URLconf:: from django.conf import settings + from django.views.static import serve # ... the rest of your URLconf goes here ... if settings.DEBUG: - urlpatterns += patterns('', - url(r'^media/(?P<path>.*)$', 'django.views.static.serve', { + urlpatterns += [ + url(r'^media/(?P<path>.*)$', serve, { 'document_root': settings.MEDIA_ROOT, }), - ) + ] Note, the snippet assumes your :setting:`MEDIA_URL` has a value of ``'/media/'``. This will call the :func:`~django.views.static.serve` view, |
