自从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_dictionary和optional_name参数。
注意
因为patterns()是一个函数调用,它最多接受255个参数(在这种情况下是URL模式)。这是所有Python函数调用的限制。这在实践中很少会出现问题,因为您通常会使用include()节来模块化地构建网址格式。但是,如果你碰到255参数限制,意识到patterns()返回一个Python列表,所以你可以拆分列表的构造。
urlpatterns = patterns('',
...
)
urlpatterns += patterns('',
...
)
Python列表具有无限大小,因此您可以构造多少个网址格式没有限制。唯一的限制是,一次只能创建254(第255个参数是初始前缀参数)。
帮助函数返回在调试模式下提供文件的网址格式:
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)
view参数从字符串('django.views.static.serve')更改为函数。
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参数。
一个函数需要一个完整的Python导入路径到另一个URLconf模块,应该“包括”在这个地方。或者,也可以指定要包含条目的application namespace和instance namespace。
include()还接受返回URL模式的iterable或包含此类iterable的3元组加上应用程序和实例命名空间的名称作为参数。
参数: |
|
---|
请参阅Including other URLconfs和URL namespaces and included URLconfs。
如果HTTP客户端已发送导致错误条件的请求和状态代码为400的响应,则应调用的可调用或表示完整的Python视图导入路径的字符串。
默认情况下,这是'django.views.defaults.bad_request'。该默认值应该足够了。
有关详细信息,请参阅有关the 400 (bad request) view的文档。
一个callable或一个字符串,表示如果用户没有访问资源所需的权限,应调用的视图的完整Python导入路径。
默认情况下,这是'django.views.defaults.permission_denied'。该默认值应该足够了。
有关详细信息,请参阅有关the 403 (HTTP Forbidden) view的文档。
一个callable或一个字符串,表示如果没有URL模式匹配,应该调用的视图的完整Python导入路径。
默认情况下,这是'django.views.defaults.page_not_found'。该默认值应该足够了。
有关详细信息,请参阅有关the 404 (HTTP Not Found) view的文档。
一个可调用的或一个字符串,表示在服务器错误时应调用的视图的完整Python导入路径。在视图代码中存在运行时错误时,会发生服务器错误。
默认情况下,这是'django.views.defaults.server_error'。该默认值应该足够了。
有关详细信息,请参阅有关the 500 (HTTP Internal Server Error) view的文档。
2015年5月13日