Fixed #14675 -- Completed removal of `from django.conf.urls.default import *` usage.

This applies to both our own [test] code and documentation examples. Also:
 * Moved the functions and handlers from `django.conf.urls.defaults` up to
   `django.conf.urls` deprecating the former module.
 * Added documentation for `handler403`.
 * Tweaked the URLs topic document a bit.

Thanks to pupeno and cdestigter for their great work contributing patches.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16818 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Ramiro Morales 2011-09-11 22:36:16 +00:00
parent fd90453462
commit 26b8122087
88 changed files with 243 additions and 198 deletions

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin: # Uncomment the next two lines to enable the admin:
# from django.contrib import admin # from django.contrib import admin

View File

@ -0,0 +1,61 @@
from django.core.urlresolvers import (RegexURLPattern,
RegexURLResolver, LocaleRegexURLResolver)
from django.core.exceptions import ImproperlyConfigured
from django.utils.importlib import import_module
__all__ = ['handler403', 'handler404', 'handler500', 'include', 'patterns', 'url']
handler403 = 'django.views.defaults.permission_denied'
handler404 = 'django.views.defaults.page_not_found'
handler500 = 'django.views.defaults.server_error'
def include(arg, namespace=None, app_name=None):
if isinstance(arg, tuple):
# callable returning a namespace hint
if namespace:
raise ImproperlyConfigured('Cannot override the namespace for a dynamic module that provides a namespace')
urlconf_module, app_name, namespace = arg
else:
# No namespace hint - use manually provided namespace
urlconf_module = arg
if isinstance(urlconf_module, basestring):
urlconf_module = import_module(urlconf_module)
patterns = getattr(urlconf_module, 'urlpatterns', urlconf_module)
# Make sure we can iterate through the patterns (without this, some
# testcases will break).
if isinstance(patterns, (list, tuple)):
for url_pattern in patterns:
# Test if the LocaleRegexURLResolver is used within the include;
# this should throw an error since this is not allowed!
if isinstance(url_pattern, LocaleRegexURLResolver):
raise ImproperlyConfigured(
'Using i18n_patterns in an included URLconf is not allowed.')
return (urlconf_module, app_name, namespace)
def patterns(prefix, *args):
pattern_list = []
for t in args:
if isinstance(t, (list, tuple)):
t = url(prefix=prefix, *t)
elif isinstance(t, RegexURLPattern):
t.add_prefix(prefix)
pattern_list.append(t)
return pattern_list
def url(regex, view, kwargs=None, name=None, prefix=''):
if isinstance(view, (list,tuple)):
# For include(...) processing.
urlconf_module, app_name, namespace = view
return RegexURLResolver(regex, urlconf_module, kwargs, app_name=app_name, namespace=namespace)
else:
if isinstance(view, basestring):
if not view:
raise ImproperlyConfigured('Empty URL pattern view name not permitted (for pattern %r)' % regex)
if prefix:
view = prefix + '.' + view
return RegexURLPattern(regex, view, kwargs, name)

View File

@ -1,61 +1,6 @@
from django.core.urlresolvers import (RegexURLPattern, import warnings
RegexURLResolver, LocaleRegexURLResolver) warnings.warn("django.conf.urls.defaults is deprecated; use django.conf.urls instead",
from django.core.exceptions import ImproperlyConfigured PendingDeprecationWarning)
from django.utils.importlib import import_module
__all__ = ['handler404', 'handler500', 'include', 'patterns', 'url']
handler403 = 'django.views.defaults.permission_denied'
handler404 = 'django.views.defaults.page_not_found'
handler500 = 'django.views.defaults.server_error'
def include(arg, namespace=None, app_name=None):
if isinstance(arg, tuple):
# callable returning a namespace hint
if namespace:
raise ImproperlyConfigured('Cannot override the namespace for a dynamic module that provides a namespace')
urlconf_module, app_name, namespace = arg
else:
# No namespace hint - use manually provided namespace
urlconf_module = arg
if isinstance(urlconf_module, basestring):
urlconf_module = import_module(urlconf_module)
patterns = getattr(urlconf_module, 'urlpatterns', urlconf_module)
# Make sure we can iterate through the patterns (without this, some
# testcases will break).
if isinstance(patterns, (list, tuple)):
for url_pattern in patterns:
# Test if the LocaleRegexURLResolver is used within the include;
# this should throw an error since this is not allowed!
if isinstance(url_pattern, LocaleRegexURLResolver):
raise ImproperlyConfigured(
'Using i18n_patterns in an included URLconf is not allowed.')
return (urlconf_module, app_name, namespace)
def patterns(prefix, *args):
pattern_list = []
for t in args:
if isinstance(t, (list, tuple)):
t = url(prefix=prefix, *t)
elif isinstance(t, RegexURLPattern):
t.add_prefix(prefix)
pattern_list.append(t)
return pattern_list
def url(regex, view, kwargs=None, name=None, prefix=''):
if isinstance(view, (list,tuple)):
# For include(...) processing.
urlconf_module, app_name, namespace = view
return RegexURLResolver(regex, urlconf_module, kwargs, app_name=app_name, namespace=namespace)
else:
if isinstance(view, basestring):
if not view:
raise ImproperlyConfigured('Empty URL pattern view name not permitted (for pattern %r)' % regex)
if prefix:
view = prefix + '.' + view
return RegexURLPattern(regex, view, kwargs, name)
from django.conf.urls import (handler403, handler404, handler500,
include, patterns, url)

View File

@ -1,5 +1,5 @@
from django.conf import settings from django.conf import settings
from django.conf.urls.defaults import patterns from django.conf.urls import patterns
from django.core.urlresolvers import LocaleRegexURLResolver from django.core.urlresolvers import LocaleRegexURLResolver
def i18n_patterns(prefix, *args): def i18n_patterns(prefix, *args):

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns
urlpatterns = patterns('django.views', urlpatterns = patterns('django.views',
(r'^(?P<content_type_id>\d+)/(?P<object_id>.*)/$', 'defaults.shortcut'), (r'^(?P<content_type_id>\d+)/(?P<object_id>.*)/$', 'defaults.shortcut'),

View File

@ -1,6 +1,6 @@
import re import re
from django.conf import settings from django.conf import settings
from django.conf.urls.defaults import patterns, url from django.conf.urls import patterns, url
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
def static(prefix, view='django.views.static.serve', **kwargs): def static(prefix, view='django.views.static.serve', **kwargs):

View File

@ -320,7 +320,7 @@ class ModelAdmin(BaseModelAdmin):
super(ModelAdmin, self).__init__() super(ModelAdmin, self).__init__()
def get_urls(self): def get_urls(self):
from django.conf.urls.defaults import patterns, url from django.conf.urls import patterns, url
def wrap(view): def wrap(view):
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):

View File

@ -174,7 +174,7 @@ class AdminSite(object):
class MyAdminSite(AdminSite): class MyAdminSite(AdminSite):
def get_urls(self): def get_urls(self):
from django.conf.urls.defaults import patterns, url from django.conf.urls import patterns, url
urls = super(MyAdminSite, self).get_urls() urls = super(MyAdminSite, self).get_urls()
urls += patterns('', urls += patterns('',
@ -199,7 +199,7 @@ class AdminSite(object):
return update_wrapper(inner, view) return update_wrapper(inner, view)
def get_urls(self): def get_urls(self):
from django.conf.urls.defaults import patterns, url, include from django.conf.urls import patterns, url, include
if settings.DEBUG: if settings.DEBUG:
self.check_dependencies() self.check_dependencies()

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from django.contrib.admindocs import views from django.contrib.admindocs import views
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -74,7 +74,7 @@ class UserAdmin(admin.ModelAdmin):
return super(UserAdmin, self).get_form(request, obj, **defaults) return super(UserAdmin, self).get_form(request, obj, **defaults)
def get_urls(self): def get_urls(self):
from django.conf.urls.defaults import patterns from django.conf.urls import patterns
return patterns('', return patterns('',
(r'^(\d+)/password/$', self.admin_site.admin_view(self.user_change_password)) (r'^(\d+)/password/$', self.admin_site.admin_view(self.user_change_password))
) + super(UserAdmin, self).get_urls() ) + super(UserAdmin, self).get_urls()

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns, url from django.conf.urls import patterns, url
from django.contrib.auth import context_processors from django.contrib.auth import context_processors
from django.contrib.auth.urls import urlpatterns from django.contrib.auth.urls import urlpatterns
from django.contrib.auth.views import password_reset from django.contrib.auth.views import password_reset

View File

@ -2,7 +2,7 @@
# provided as a convenience to those who want to deploy these URLs elsewhere. # provided as a convenience to those who want to deploy these URLs elsewhere.
# This file is also used to provide a reliable view deployment for test purposes. # This file is also used to provide a reliable view deployment for test purposes.
from django.conf.urls.defaults import * from django.conf.urls import patterns
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^login/$', 'django.contrib.auth.views.login'), (r'^login/$', 'django.contrib.auth.views.login'),

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
urlpatterns = patterns('django.contrib.comments.views', urlpatterns = patterns('django.contrib.comments.views',
url(r'^post/$', 'comments.post_comment', name='comments-post-comment'), url(r'^post/$', 'comments.post_comment', name='comments-post-comment'),

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns
from django.contrib.databrowse import views from django.contrib.databrowse import views
# Note: The views in this URLconf all require a 'models' argument, # Note: The views in this URLconf all require a 'models' argument,

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, include
# special urls for flatpage test cases # special urls for flatpage test cases
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns
urlpatterns = patterns('django.contrib.flatpages.views', urlpatterns = patterns('django.contrib.flatpages.views',
(r'^(?P<url>.*)$', 'flatpage'), (r'^(?P<url>.*)$', 'flatpage'),

View File

@ -2,7 +2,7 @@
This is a URLconf to be loaded by tests.py. Add any URLs needed for tests only. This is a URLconf to be loaded by tests.py. Add any URLs needed for tests only.
""" """
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from django.contrib.formtools.tests import TestFormPreview, TestWizardClass from django.contrib.formtools.tests import TestFormPreview, TestWizardClass
from forms import (ContactWizard, Page1, Page2, Page3, TestForm, from forms import (ContactWizard, Page1, Page2, Page3, TestForm,

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns, url from django.conf.urls import patterns, url
from django.contrib.formtools.tests.wizard.namedwizardtests.forms import ( from django.contrib.formtools.tests.wizard.namedwizardtests.forms import (
SessionContactWizard, CookieContactWizard, Page1, Page2, Page3, Page4) SessionContactWizard, CookieContactWizard, Page1, Page2, Page3, Page4)

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from django.contrib.formtools.tests.wizard.wizardtests.forms import ( from django.contrib.formtools.tests.wizard.wizardtests.forms import (
SessionContactWizard, CookieContactWizard, Page1, Page2, Page3, Page4) SessionContactWizard, CookieContactWizard, Page1, Page2, Page3, Page4)

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, include
from django.contrib import admin from django.contrib import admin
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns
from feeds import feed_dict from feeds import feed_dict
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns
from django.contrib import messages from django.contrib import messages
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect, HttpResponse from django.http import HttpResponseRedirect, HttpResponse

View File

@ -1,5 +1,5 @@
from datetime import datetime from datetime import datetime
from django.conf.urls.defaults import * from django.conf.urls import patterns
from django.contrib.sitemaps import Sitemap, GenericSitemap, FlatPageSitemap from django.contrib.sitemaps import Sitemap, GenericSitemap, FlatPageSitemap
from django.contrib.auth.models import User from django.contrib.auth.models import User

View File

@ -243,6 +243,12 @@ their deprecation, as per the :ref:`deprecation policy
:mod:`django.contrib.gis.geoip` in 1.4 -- the shortcut in :mod:`django.contrib.gis.geoip` in 1.4 -- the shortcut in
:mod:`django.contrib.gis.utils` will be removed. :mod:`django.contrib.gis.utils` will be removed.
* In 1.4, functions :func:`~django.conf.urls.include`, :func:`~django.conf.urls.patterns`
and :func:`~django.conf.urls.url` plus :data:`~django.conf.urls.handler404`,
:data:`~django.conf.urls.handler500` were moved to :mod:`django.conf.urls`
from their previous location ``django.conf.urls.defaults``. This module
was deprecated at the same time and will be removed in this Django release.
2.0 2.0
--- ---

View File

@ -176,7 +176,7 @@ decouple URLs from Python code.
Here's what a URLconf might look like for the ``Reporter``/``Article`` Here's what a URLconf might look like for the ``Reporter``/``Article``
example above:: example above::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^articles/(\d{4})/$', 'news.views.year_archive'), (r'^articles/(\d{4})/$', 'news.views.year_archive'),

View File

@ -40,7 +40,7 @@ activate the admin site for your installation, do these three things:
.. parsed-literal:: .. parsed-literal::
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin: # Uncomment the next two lines to enable the admin:
**from django.contrib import admin** **from django.contrib import admin**

View File

@ -78,7 +78,7 @@ point at that file::
Time for an example. Edit ``mysite/urls.py`` so it looks like this:: Time for an example. Edit ``mysite/urls.py`` so it looks like this::
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
from django.contrib import admin from django.contrib import admin
admin.autodiscover() admin.autodiscover()
@ -367,7 +367,7 @@ special: It's just a normal view.
You normally won't have to bother with writing 404 views. By default, URLconfs You normally won't have to bother with writing 404 views. By default, URLconfs
have the following line up top:: have the following line up top::
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
That takes care of setting ``handler404`` in the current module. As you can see That takes care of setting ``handler404`` in the current module. As you can see
in ``django/conf/urls/defaults.py``, ``handler404`` is set to in ``django/conf/urls/defaults.py``, ``handler404`` is set to
@ -443,7 +443,7 @@ Namely, ``polls.views`` is in every callback.
Because this is a common case, the URLconf framework provides a shortcut for Because this is a common case, the URLconf framework provides a shortcut for
common prefixes. You can factor out the common prefixes and add them as the common prefixes. You can factor out the common prefixes and add them as the
first argument to :func:`~django.conf.urls.defaults.patterns`, like so:: first argument to :func:`~django.conf.urls.patterns`, like so::
urlpatterns = patterns('polls.views', urlpatterns = patterns('polls.views',
(r'^polls/$', 'index'), (r'^polls/$', 'index'),
@ -457,21 +457,21 @@ tidier.
Since you generally don't want the prefix for one app to be applied to every Since you generally don't want the prefix for one app to be applied to every
callback in your URLconf, you can concatenate multiple callback in your URLconf, you can concatenate multiple
:func:`~django.conf.urls.defaults.patterns`. Your full ``mysite/urls.py`` might :func:`~django.conf.urls.patterns`. Your full ``mysite/urls.py`` might
now look like this:: now look like this::
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
from django.contrib import admin from django.contrib import admin
admin.autodiscover() admin.autodiscover()
urlpatterns = patterns('polls.views', urlpatterns = patterns('polls.views',
(r'^polls/$', 'index'), (r'^polls/$', 'index'),
(r'^polls/(?P<poll_id>\d+)/$', 'detail'), (r'^polls/(?P<poll_id>\d+)/$', 'detail'),
(r'^polls/(?P<poll_id>\d+)/results/$', 'results'), (r'^polls/(?P<poll_id>\d+)/results/$', 'results'),
(r'^polls/(?P<poll_id>\d+)/vote/$', 'vote'), (r'^polls/(?P<poll_id>\d+)/vote/$', 'vote'),
) )
urlpatterns += patterns('', urlpatterns += patterns('',
url(r'^admin/', include(admin.site.urls)), url(r'^admin/', include(admin.site.urls)),
) )
@ -494,23 +494,23 @@ 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`, leaving you with:: :func:`~django.conf.urls.include`, leaving you with::
# This also imports the include function # This also imports the include function
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
from django.contrib import admin from django.contrib import admin
admin.autodiscover() admin.autodiscover()
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^polls/', include('polls.urls')), (r'^polls/', include('polls.urls')),
url(r'^admin/', include(admin.site.urls)), url(r'^admin/', include(admin.site.urls)),
) )
:func:`~django.conf.urls.defaults.include` simply references another URLconf. :func:`~django.conf.urls.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.include`, it chops off whatever part of the
URL matched up to that point and sends the remaining string to the included URL matched up to that point and sends the remaining string to the included
URLconf for further processing. URLconf for further processing.
@ -527,7 +527,7 @@ URLconf by removing the leading "polls/" from each line, and removing the
lines registering the admin site. Your ``polls/urls.py`` file should now look like lines registering the admin site. Your ``polls/urls.py`` file should now look like
this:: this::
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
urlpatterns = patterns('polls.views', urlpatterns = patterns('polls.views',
(r'^$', 'index'), (r'^$', 'index'),
@ -536,7 +536,7 @@ this::
(r'^(?P<poll_id>\d+)/vote/$', 'vote'), (r'^(?P<poll_id>\d+)/vote/$', 'vote'),
) )
The idea behind :func:`~django.conf.urls.defaults.include` and URLconf The idea behind :func:`~django.conf.urls.include` and URLconf
decoupling is to make it easy to plug-and-play URLs. Now that polls are in their decoupling is to make it easy to plug-and-play URLs. Now that polls are in their
own URLconf, they can be placed under "/polls/", or under "/fun_polls/", or own URLconf, 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. under "/content/polls/", or any other path root, and the app will still work.

View File

@ -218,7 +218,7 @@ Read on for details.
First, open the ``polls/urls.py`` URLconf. It looks like this, according to the First, open the ``polls/urls.py`` URLconf. It looks like this, according to the
tutorial so far:: tutorial so far::
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
urlpatterns = patterns('polls.views', urlpatterns = patterns('polls.views',
(r'^$', 'index'), (r'^$', 'index'),
@ -229,7 +229,7 @@ tutorial so far::
Change it like so:: Change it like so::
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
from django.views.generic import DetailView, ListView from django.views.generic import DetailView, ListView
from polls.models import Poll from polls.models import Poll
@ -269,9 +269,9 @@ two views abstract the concepts of "display a list of objects" and
that we have a way to refer to its URL later on (see the that we have a way to refer to its URL later on (see the
documentation about :ref:`naming URL patterns documentation about :ref:`naming URL patterns
<naming-url-patterns>` for information). We're also using the <naming-url-patterns>` for information). We're also using the
:func:`~django.conf.urls.default.url` function from :func:`~django.conf.urls.url` function from
:mod:`django.conf.urls.defaults` here. It's a good habit to use :mod:`django.conf.urls` here. It's a good habit to use
:func:`~django.conf.urls.defaults.url` when you are providing a :func:`~django.conf.urls.url` when you are providing a
pattern name like this. pattern name like this.
By default, the :class:`~django.views.generic.list.DetailView` generic By default, the :class:`~django.views.generic.list.DetailView` generic

View File

@ -1831,7 +1831,7 @@ In this example, we register the default ``AdminSite`` instance
``django.contrib.admin.site`` at the URL ``/admin/`` :: ``django.contrib.admin.site`` at the URL ``/admin/`` ::
# urls.py # urls.py
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from django.contrib import admin from django.contrib import admin
admin.autodiscover() admin.autodiscover()
@ -1847,7 +1847,7 @@ In this example, we register the ``AdminSite`` instance
``myproject.admin.admin_site`` at the URL ``/myadmin/`` :: ``myproject.admin.admin_site`` at the URL ``/myadmin/`` ::
# urls.py # urls.py
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from myproject.admin import admin_site from myproject.admin import admin_site
urlpatterns = patterns('', urlpatterns = patterns('',
@ -1871,7 +1871,7 @@ separate versions of the admin site -- using the ``AdminSite`` instances
respectively:: respectively::
# urls.py # urls.py
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from myproject.admin import basic_site, advanced_site from myproject.admin import basic_site, advanced_site
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -143,7 +143,7 @@ enable it in your project's ``urls.py``:
.. code-block:: python .. code-block:: python
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from django.contrib.comments.feeds import LatestCommentFeed from django.contrib.comments.feeds import LatestCommentFeed
urlpatterns = patterns('', urlpatterns = patterns('',
@ -161,7 +161,7 @@ syndication feed view:
.. code-block:: python .. code-block:: python
from django.conf.urls.defaults import * from django.conf.urls import patterns
from django.contrib.comments.feeds import LatestCommentFeed from django.contrib.comments.feeds import LatestCommentFeed
feeds = { feeds = {

View File

@ -217,7 +217,7 @@ deploy the new :class:`WizardView` object a URL in the ``urls.py``. The
wizard's :meth:`as_view` method takes a list of your wizard's :meth:`as_view` method takes a list of your
:class:`~django.forms.Form` classes as an argument during instantiation:: :class:`~django.forms.Form` classes as an argument during instantiation::
from django.conf.urls.defaults import patterns from django.conf.urls import patterns
from myapp.forms import ContactForm1, ContactForm2 from myapp.forms import ContactForm1, ContactForm2
from myapp.views import ContactWizard from myapp.views import ContactWizard
@ -525,7 +525,7 @@ We define our wizard in a ``views.py``::
We need to add the ``ContactWizard`` to our ``urls.py`` file:: We need to add the ``ContactWizard`` to our ``urls.py`` file::
from django.conf.urls.defaults import pattern from django.conf.urls import pattern
from myapp.forms import ContactForm1, ContactForm2 from myapp.forms import ContactForm1, ContactForm2
from myapp.views import ContactWizard, show_message_form_condition from myapp.views import ContactWizard, show_message_form_condition
@ -572,7 +572,7 @@ Additionally you have to pass two more arguments to the
Example code for the changed ``urls.py`` file:: Example code for the changed ``urls.py`` file::
from django.conf.urls.defaults import url, patterns from django.conf.urls import url, patterns
from myapp.forms import ContactForm1, ContactForm2 from myapp.forms import ContactForm1, ContactForm2
from myapp.views import ContactWizard from myapp.views import ContactWizard

View File

@ -697,7 +697,7 @@ Let's dive in again -- create a file called ``admin.py`` inside the
Next, edit your ``urls.py`` in the ``geodjango`` project folder to look Next, edit your ``urls.py`` in the ``geodjango`` project folder to look
as follows:: as follows::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from django.contrib.gis import admin from django.contrib.gis import admin
admin.autodiscover() admin.autodiscover()

View File

@ -241,7 +241,7 @@ Example
Here's an example of a :doc:`URLconf </topics/http/urls>` using both:: Here's an example of a :doc:`URLconf </topics/http/urls>` using both::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from django.contrib.sitemaps import FlatPageSitemap, GenericSitemap from django.contrib.sitemaps import FlatPageSitemap, GenericSitemap
from blog.models import Entry from blog.models import Entry

View File

@ -80,7 +80,7 @@ latest five news items::
To connect a URL to this feed, put an instance of the Feed object in To connect a URL to this feed, put an instance of the Feed object in
your :doc:`URLconf </topics/http/urls>`. For example:: your :doc:`URLconf </topics/http/urls>`. For example::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from myproject.feeds import LatestEntriesFeed from myproject.feeds import LatestEntriesFeed
urlpatterns = patterns('', urlpatterns = patterns('',
@ -327,7 +327,7 @@ Here's a full example::
And the accompanying URLconf:: And the accompanying URLconf::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from myproject.feeds import RssSiteNewsFeed, AtomSiteNewsFeed from myproject.feeds import RssSiteNewsFeed, AtomSiteNewsFeed
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -524,7 +524,7 @@ pattern, it's possible to give a name to a pattern, and then reference the name
rather than the view function. A named URL pattern is defined by replacing the rather than the view function. A named URL pattern is defined by replacing the
pattern tuple by a call to the ``url`` function):: pattern tuple by a call to the ``url`` function)::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
url(r'^people/(\d+)/$', 'blog_views.generic_detail', name='people_view'), url(r'^people/(\d+)/$', 'blog_views.generic_detail', name='people_view'),

View File

@ -290,9 +290,10 @@ Django 1.4 also includes several smaller improvements worth noting:
MySQL with the InnoDB database engine. MySQL with the InnoDB database engine.
* A new 403 response handler has been added as * A new 403 response handler has been added as
``'django.views.defaults.permission_denied'``. See the documentation ``'django.views.defaults.permission_denied'``. You can set your own handler by
about :ref:`the 403 (HTTP Forbidden) view<http_forbidden_view>` for more setting the value of :data:`django.conf.urls.handler403`. See the
information. documentation about :ref:`the 403 (HTTP Forbidden) view<http_forbidden_view>`
for more information.
* The :ttag:`trans` template tag now takes an optional ``as`` argument to * The :ttag:`trans` template tag now takes an optional ``as`` argument to
be able to retrieve a translation string without displaying it but setting be able to retrieve a translation string without displaying it but setting
@ -590,3 +591,13 @@ backwards-compatibility shim will be removed entirely.
The existence of any ``'filters'`` key under the ``'mail_admins'`` handler will The existence of any ``'filters'`` key under the ``'mail_admins'`` handler will
disable this backward-compatibility shim and deprecation warning. disable this backward-compatibility shim and deprecation warning.
``django.conf.urls.defaults``
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Until Django 1.3 the functions :func:`~django.conf.urls.include`,
:func:`~django.conf.urls.patterns` and :func:`~django.conf.urls.url` plus
:data:`~django.conf.urls.handler404`, :data:`~django.conf.urls.handler500`
were located in a ``django.conf.urls.defaults`` module.
Starting with Django 1.4 they are now available in :mod:`django.conf.urls`.

View File

@ -75,7 +75,7 @@ views themselves are classes, we point the URL to the ``as_view`` class method
instead, which is the entry point for class-based views:: instead, which is the entry point for class-based views::
# urls.py # urls.py
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from some_app.views import AboutView from some_app.views import AboutView
urlpatterns = patterns('', urlpatterns = patterns('',
@ -86,7 +86,7 @@ Alternatively, if you're only changing a few simple attributes on a
class-based view, you can simply pass the new attributes into the ``as_view`` class-based view, you can simply pass the new attributes into the ``as_view``
method call itself:: method call itself::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from django.views.generic import TemplateView from django.views.generic import TemplateView
urlpatterns = patterns('', urlpatterns = patterns('',
@ -135,7 +135,7 @@ be using these models::
To build a list page of all publishers, we'd use a URLconf along these lines:: To build a list page of all publishers, we'd use a URLconf along these lines::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from django.views.generic import ListView from django.views.generic import ListView
from books.models import Publisher from books.models import Publisher

View File

@ -58,7 +58,7 @@ URLconf tuple for a given pattern.
For example, here's a simple URLconf you could use to present a static "about" For example, here's a simple URLconf you could use to present a static "about"
page:: page::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from django.views.generic.simple import direct_to_template from django.views.generic.simple import direct_to_template
urlpatterns = patterns('', urlpatterns = patterns('',
@ -80,7 +80,7 @@ the URLconf to point to a view function:
.. parsed-literal:: .. parsed-literal::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from django.views.generic.simple import direct_to_template from django.views.generic.simple import direct_to_template
**from books.views import about_pages** **from books.views import about_pages**
@ -160,7 +160,7 @@ be using these models::
To build a list page of all publishers, we'd use a URLconf along these lines:: To build a list page of all publishers, we'd use a URLconf along these lines::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from django.views.generic import list_detail from django.views.generic import list_detail
from books.models import Publisher from books.models import Publisher

View File

@ -50,7 +50,7 @@ algorithm the system follows to determine which Python code to execute:
2. Django loads that Python module and looks for the variable 2. Django loads that Python module and looks for the variable
``urlpatterns``. This should be a Python list, in the format returned by ``urlpatterns``. This should be a Python list, in the format returned by
the function :func:`django.conf.urls.defaults.patterns`. the function :func:`django.conf.urls.patterns`.
3. Django runs through each URL pattern, in order, and stops at the first 3. Django runs through each URL pattern, in order, and stops at the first
one that matches the requested URL. one that matches the requested URL.
@ -69,7 +69,7 @@ Example
Here's a sample URLconf:: Here's a sample URLconf::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^articles/2003/$', 'news.views.special_case_2003'), (r'^articles/2003/$', 'news.views.special_case_2003'),
@ -80,9 +80,6 @@ Here's a sample URLconf::
Notes: Notes:
* ``from django.conf.urls.defaults import *`` makes the ``patterns()``
function available.
* To capture a value from the URL, just put parenthesis around it. * To capture a value from the URL, just put parenthesis around it.
* There's no need to add a leading slash, because every URL has that. For * There's no need to add a leading slash, because every URL has that. For
@ -184,13 +181,21 @@ Syntax of the urlpatterns variable
================================== ==================================
``urlpatterns`` should be a Python list, in the format returned by the function ``urlpatterns`` should be a Python list, in the format returned by the function
:func:`django.conf.urls.defaults.patterns`. Always use ``patterns()`` to create :func:`django.conf.urls.patterns`. Always use ``patterns()`` to create
the ``urlpatterns`` variable. the ``urlpatterns`` variable.
Convention is to use ``from django.conf.urls.defaults import *`` at the top of ``django.conf.urls`` utility functions
your URLconf. This gives your module access to these objects: ======================================
.. module:: django.conf.urls.defaults .. module:: django.conf.urls
.. deprecated:: 1.4
Starting with Django 1.4 functions ``patterns``, ``url``, ``include`` plus
the ``handler*`` symbols described below live in the ``django.conf.urls``
module.
Until Django 1.3 they were located in ``django.conf.urls.defaults``. You
still can import them from there but it will be removed in Django 1.6.
patterns patterns
-------- --------
@ -281,6 +286,24 @@ URLconf will have no effect.
See the documentation on :ref:`customizing error views See the documentation on :ref:`customizing error views
<customizing-error-views>` for more details. <customizing-error-views>` for more details.
handler403
----------
.. data:: handler403
A callable, or a string representing the full Python import path to the view
that should be called if the user has no the permissions required to access
a resource.
By default, this is ``'django.views.defaults.permission_denied'``. That default
value should suffice.
See the documentation about :ref:`the 403 (HTTP Forbidden) view
<http_forbidden_view>` for more information.
.. versionadded:: 1.4
``handler403`` is new in Django 1.4.
handler404 handler404
---------- ----------
@ -355,7 +378,7 @@ code duplication.
Here's the example URLconf from the :doc:`Django overview </intro/overview>`:: Here's the example URLconf from the :doc:`Django overview </intro/overview>`::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^articles/(\d{4})/$', 'news.views.year_archive'), (r'^articles/(\d{4})/$', 'news.views.year_archive'),
@ -370,7 +393,7 @@ each view function.
With this in mind, the above example can be written more concisely as:: With this in mind, the above example can be written more concisely as::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
urlpatterns = patterns('news.views', urlpatterns = patterns('news.views',
(r'^articles/(\d{4})/$', 'year_archive'), (r'^articles/(\d{4})/$', 'year_archive'),
@ -391,7 +414,7 @@ Just add multiple ``patterns()`` objects together, like this:
Old:: Old::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^$', 'django.views.generic.date_based.archive_index'), (r'^$', 'django.views.generic.date_based.archive_index'),
@ -401,7 +424,7 @@ Old::
New:: New::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
urlpatterns = patterns('django.views.generic.date_based', urlpatterns = patterns('django.views.generic.date_based',
(r'^$', 'archive_index'), (r'^$', 'archive_index'),
@ -421,7 +444,7 @@ essentially "roots" a set of URLs below other ones.
For example, here's the URLconf for the `Django Web site`_ itself. It includes a For example, here's the URLconf for the `Django Web site`_ itself. It includes a
number of other URLconfs:: number of other URLconfs::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^weblog/', include('django_website.apps.blog.urls.blog')), (r'^weblog/', include('django_website.apps.blog.urls.blog')),
@ -439,7 +462,7 @@ Another possibility is to include additional URL patterns not by specifying the
URLconf Python module defining them as the `include`_ argument but by using URLconf Python module defining them as the `include`_ argument but by using
directly the pattern list as returned by `patterns`_ instead. For example:: directly the pattern list as returned by `patterns`_ instead. For example::
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
extra_patterns = patterns('', extra_patterns = patterns('',
url(r'reports/(?P<id>\d+)/$', 'credit.views.report', name='credit-reports'), url(r'reports/(?P<id>\d+)/$', 'credit.views.report', name='credit-reports'),
@ -784,8 +807,8 @@ following would happen:
* ``foo:index`` will again resolve to the index page of the instance ``foo``. * ``foo:index`` will again resolve to the index page of the instance ``foo``.
Utility methods ``django.core.urlresolvers`` utility functions
=============== ==============================================
.. currentmodule:: django.core.urlresolvers .. currentmodule:: django.core.urlresolvers
@ -793,7 +816,7 @@ reverse()
--------- ---------
If you need to use something similar to the :ttag:`url` template tag in If you need to use something similar to the :ttag:`url` template tag in
your code, Django provides the following method (in the your code, Django provides the following function (in the
:mod:`django.core.urlresolvers` module): :mod:`django.core.urlresolvers` module):
.. function:: reverse(viewname, [urlconf=None, args=None, kwargs=None, current_app=None]) .. function:: reverse(viewname, [urlconf=None, args=None, kwargs=None, current_app=None])
@ -859,7 +882,7 @@ reverse_lazy()
A lazily evaluated version of `reverse()`_. A lazily evaluated version of `reverse()`_.
It is useful for when you need to use a URL reversal before your project's It is useful for when you need to use a URL reversal before your project's
URLConf is loaded. Some common cases where this method is necessary are: URLConf is loaded. Some common cases where this function is necessary are:
* providing a reversed URL as the ``url`` attribute of a generic class-based * providing a reversed URL as the ``url`` attribute of a generic class-based
view. view.

View File

@ -819,11 +819,11 @@ Language prefix in URL patterns
.. function:: i18n_patterns(prefix, pattern_description, ...) .. function:: i18n_patterns(prefix, pattern_description, ...)
This function can be used in your root URLconf as a replacement for the normal This function can be used in your root URLconf as a replacement for the normal
:func:`django.conf.urls.defaults.patterns` function. Django will automatically :func:`django.conf.urls.patterns` function. Django will automatically
prepend the current active language code to all url patterns defined within prepend the current active language code to all url patterns defined within
:func:`~django.conf.urls.i18n.i18n_patterns`. Example URL patterns:: :func:`~django.conf.urls.i18n.i18n_patterns`. Example URL patterns::
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns from django.conf.urls.i18n import i18n_patterns
urlpatterns = patterns('' urlpatterns = patterns(''
@ -877,7 +877,7 @@ Translating URL patterns
URL patterns can also be marked translatable using the URL patterns can also be marked translatable using the
:func:`~django.utils.translation.ugettext_lazy` function. Example:: :func:`~django.utils.translation.ugettext_lazy` function. Example::
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns
from django.views.generic import RedirectView from django.views.generic import RedirectView
import views import views

View File

@ -1,7 +1,7 @@
""" """
A second, custom AdminSite -- see tests.CustomAdminSiteTests. A second, custom AdminSite -- see tests.CustomAdminSiteTests.
""" """
from django.conf.urls.defaults import patterns from django.conf.urls import patterns
from django.contrib import admin from django.contrib import admin
from django.http import HttpResponse from django.http import HttpResponse

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, include
from django.contrib import admin from django.contrib import admin
import views import views
import customadmin import customadmin

View File

@ -1,5 +1,4 @@
from django.conf.urls import patterns, include
from django.conf.urls.defaults import *
import widgetadmin import widgetadmin
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from django.contrib.comments.feeds import LatestCommentFeed from django.contrib.comments.feeds import LatestCommentFeed
feeds = { feeds = {

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, include
from django.contrib import admin from django.contrib import admin
from django.contrib.comments.admin import CommentsAdmin from django.contrib.comments.admin import CommentsAdmin
from django.contrib.comments.models import Comment from django.contrib.comments.models import Comment

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns
import views import views
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
import views import views

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns
import views import views
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, include
from django.contrib import admin from django.contrib import admin
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from django.views.generic import TemplateView from django.views.generic import TemplateView
from django.views.decorators.cache import cache_page from django.views.decorators.cache import cache_page

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns, include, url from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import TemplateView from django.views.generic import TemplateView

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import url from django.conf.urls import url
from django.conf.urls.i18n import i18n_patterns from django.conf.urls.i18n import i18n_patterns
from django.views.generic import TemplateView from django.views.generic import TemplateView

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns, url from django.conf.urls import patterns, url
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import TemplateView from django.views.generic import TemplateView

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import include, url from django.conf.urls import include, url
from django.conf.urls.i18n import i18n_patterns from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import url from django.conf.urls import url
from django.conf.urls.i18n import i18n_patterns from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import TemplateView from django.views.generic import TemplateView

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns from django.conf.urls import patterns
from django.http import HttpResponse from django.http import HttpResponse
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns from django.conf.urls import patterns
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^middleware/customurlconf/noslash$', 'view'), (r'^middleware/customurlconf/noslash$', 'view'),

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns from django.conf.urls import patterns
urlpatterns = patterns('', urlpatterns = patterns('',
(r'^noslash$', 'view'), (r'^noslash$', 'view'),

View File

@ -1,5 +1,5 @@
# coding: utf-8 # coding: utf-8
from django.conf.urls.defaults import * from django.conf.urls import patterns
import views import views

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^guitarists/(\w{1,50})/$', 'unimplemented_view_placeholder', name='guitarist_detail'), url(r'^guitarists/(\w{1,50})/$', 'unimplemented_view_placeholder', name='guitarist_detail'),

View File

@ -1,5 +1,5 @@
# coding: utf-8 # coding: utf-8
from django.conf.urls.defaults import * from django.conf.urls import patterns
from django.views.generic.list_detail import object_detail from django.views.generic.list_detail import object_detail
from models import Article from models import Article
import views import views

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns, url from django.conf.urls import patterns, url
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^static/(?P<path>.*)$', 'django.contrib.staticfiles.views.serve'), url(r'^static/(?P<path>.*)$', 'django.contrib.staticfiles.views.serve'),

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns
import feeds import feeds

View File

@ -1,5 +1,5 @@
# coding: utf-8 # coding: utf-8
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from regressiontests.templates import views from regressiontests.templates import views

View File

@ -1,5 +1,5 @@
# coding: utf-8 # coding: utf-8
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from regressiontests.templates import views from regressiontests.templates import views
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from django.views.generic import RedirectView from django.views.generic import RedirectView
import views import views

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns from django.conf.urls import patterns
import views import views

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import patterns, url from django.conf.urls import patterns, url
urlpatterns = patterns('', urlpatterns = patterns('',
# View has erroneous import # View has erroneous import

View File

@ -2,7 +2,7 @@
Some extra URL patterns that are included at the top level. Some extra URL patterns that are included at the top level.
""" """
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from views import empty_view from views import empty_view
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from views import empty_view from views import empty_view
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from views import empty_view from views import empty_view
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from namespace_urls import URLObject from namespace_urls import URLObject
from views import view_class_instance from views import view_class_instance

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from views import empty_view from views import empty_view
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -5,7 +5,7 @@ each name to resolve and Django must distinguish the possibilities based on the
argument list. argument list.
""" """
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from views import empty_view from views import empty_view
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from views import empty_view from views import empty_view
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from views import view_class_instance from views import view_class_instance
class URLObject(object): class URLObject(object):

View File

@ -1,2 +1,2 @@
#from django.conf.urls.defaults import * #from django.conf.urls import patterns, url, include

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from views import empty_view, LazyRedirectView, login_required_view from views import empty_view, LazyRedirectView, login_required_view

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url
from django.template import Template, Context from django.template import Template, Context
from django.http import HttpResponse from django.http import HttpResponse

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
import urlconf_inner import urlconf_inner

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
from views import empty_view, absolute_kwargs_view from views import empty_view, absolute_kwargs_view
other_patterns = patterns('', other_patterns = patterns('',

View File

@ -1,6 +1,6 @@
# Used by the ErrorHandlerResolutionTests test case. # Used by the ErrorHandlerResolutionTests test case.
from django.conf.urls.defaults import patterns from django.conf.urls import patterns
urlpatterns = patterns('') urlpatterns = patterns('')

View File

@ -1,6 +1,6 @@
# Used by the ErrorHandlerResolutionTests test case. # Used by the ErrorHandlerResolutionTests test case.
from django.conf.urls.defaults import patterns from django.conf.urls import patterns
from views import empty_view from views import empty_view
urlpatterns = patterns('') urlpatterns = patterns('')

View File

@ -1,7 +1,7 @@
# A URLs file that doesn't use the default # A URLs file that doesn't use the default
# from django.conf.urls.defaults import * # from django.conf.urls import *
# import pattern. # import pattern.
from django.conf.urls.defaults import patterns, url from django.conf.urls import patterns, url
from views import empty_view, bad_view from views import empty_view, bad_view
urlpatterns = patterns('', urlpatterns = patterns('',

View File

@ -1,5 +1,5 @@
# -*- coding:utf-8 -*- # -*- coding:utf-8 -*-
from django.conf.urls.defaults import patterns, url from django.conf.urls import patterns, url
from models import * from models import *

View File

@ -1,7 +1,7 @@
# coding: utf-8 # coding: utf-8
from os import path from os import path
from django.conf.urls.defaults import * from django.conf.urls import patterns, url, include
import views import views

View File

@ -1,4 +1,4 @@
from django.conf.urls.defaults import * from django.conf.urls import patterns, include
urlpatterns = patterns('', urlpatterns = patterns('',