django.conf.urls 工具函数

patterns()

patterns(prefix, pattern_description, ...)[source]

自从1.8版本起已弃用: urlpatterns应该是django.conf.urls.url()实例的简单列表。

一个函数,它接受前缀和任意数量的URL模式,并返回Django需要的格式的URL模式列表。

patterns()的第一个参数是字符串prefix以下是Django overview中的URLconf示例:

from django.conf.urls import patterns, url

urlpatterns = patterns('',
    url(r'^articles/([0-9]{4})/$', 'news.views.year_archive'),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'news.views.month_archive'),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'news.views.article_detail'),
)

在此示例中,每个视图都有一个公共前缀 - 'news.views'您可以使用patterns()函数的第一个参数来指定要应用于每个视图函数的前缀,而不是在urlpatterns中为每个条目输入该值。

考虑到这一点,上面的例子可以更简洁地写成:

from django.conf.urls import patterns, url

urlpatterns = patterns('news.views',
    url(r'^articles/([0-9]{4})/$', 'year_archive'),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'month_archive'),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'article_detail'),
)

请注意,您不要在前缀中添加尾随点(".")。Django自动添加

其余的参数应该是这种格式的元组:

(regular expression, Python callback function [, optional_dictionary [, optional_name]])

Passing extra options to view functions中介绍了optional_dictionaryoptional_name参数。

注意

因为patterns()是一个函数调用,它最多接受255个参数(在这种情况下是URL模式)。这是所有Python函数调用的限制。这在实践中很少会出现问题,因为您通常会使用include()节来模块化地构建网址格式。但是,如果你碰到255参数限制,意识到patterns()返回一个Python列表,所以你可以拆分列表的构造。

urlpatterns = patterns('',
    ...
    )
urlpatterns += patterns('',
    ...
    )

Python列表具有无限大小,因此您可以构造多少个网址格式没有限制。唯一的限制是,一次只能创建254(第255个参数是初始前缀参数)。

static()

static.static(prefix, view=django.views.static.serve, **kwargs)

帮助函数返回在调试模式下提供文件的网址格式:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在Django 1.8中更改:

view参数从字符串('django.views.static.serve')更改为函数。

url()

url(regex, view, kwargs=None, name=None, prefix='')[source]

urlpatterns应该是url()实例的列表。例如:

urlpatterns = [
    url(r'^index/$', index_view, name="main-view"),
    ...
]

此函数有五个参数,其中大部分是可选的:

url(regex, view, kwargs=None, name=None, prefix='')

kwargs参数允许您将其他参数传递给视图函数或方法。有关示例,请参见Passing extra options to view functions

有关为什么name参数有用,请参阅Naming URL patterns

自1.8版起已弃用:支持字符串view参数已弃用,将在Django 2.0中删除。传递callable。

prefix参数与patterns()的第一个参数含义相同,仅当您将字符串作为view参数。

include()

include(module[, namespace=None, app_name=None])[source]
includepattern_list
include(pattern_listapp_namespaceinstance_namespace)

一个函数需要一个完整的Python导入路径到另一个URLconf模块,应该“包括”在这个地方。或者,也可以指定要包含条目的application namespaceinstance namespace

include()还接受返回URL模式的iterable或包含此类iterable的3元组加上应用程序和实例命名空间的名称作为参数。

参数:
  • 模块 - URLconf模块(或模块名称)
  • 命名空间string) - 包含的URL条目的实例命名空间
  • app_namestring) - 包含的URL条目的应用程序命名空间
  • pattern_list - 可迭代的django.conf.urls.url()实例
  • app_namespacestring) - 包含的URL条目的应用程序命名空间
  • instance_namespacestring) - 包含的URL条目的实例命名空间

请参阅Including other URLconfsURL namespaces and included URLconfs

handler400

handler400

如果HTTP客户端已发送导致错误条件的请求和状态代码为400的响应,则应调用的可调用或表示完整的Python视图导入路径的字符串。

默认情况下,这是'django.views.defaults.bad_request'该默认值应该足够了。

有关详细信息,请参阅有关the 400 (bad request) view的文档。

handler403

handler403

一个callable或一个字符串,表示如果用户没有访问资源所需的权限,应调用的视图的完整Python导入路径。

默认情况下,这是'django.views.defaults.permission_denied'该默认值应该足够了。

有关详细信息,请参阅有关the 403 (HTTP Forbidden) view的文档。

handler404

handler404

一个callable或一个字符串,表示如果没有URL模式匹配,应该调用的视图的完整Python导入路径。

默认情况下,这是'django.views.defaults.page_not_found'该默认值应该足够了。

有关详细信息,请参阅有关the 404 (HTTP Not Found) view的文档。

handler500

handler500

一个可调用的或一个字符串,表示在服务器错误时应调用的视图的完整Python导入路径。在视图代码中存在运行时错误时,会发生服务器错误。

默认情况下,这是'django.views.defaults.server_error'该默认值应该足够了。

有关详细信息,请参阅有关the 500 (HTTP Internal Server Error) view的文档。