URLconfs 中使用的 django.urls
函数¶
path()
¶
- path(route, view, kwargs=None, name=None)¶
返回一个元素,以便包含在 urlpatterns
中。例如:
from django.urls import include, path
urlpatterns = [
path("index/", views.index, name="main-view"),
path("bio/<username>/", views.bio, name="bio"),
path("articles/<slug:title>/", views.article, name="article-detail"),
path("articles/<slug:title>/<int:section>/", views.section, name="article-section"),
path("blog/", include("blog.urls")),
...,
]
route
¶
The route
argument should be a string or
gettext_lazy()
(see
翻译URL模式) that contains a URL pattern. The string
may contain angle brackets (like <username>
above) to capture part of the
URL and send it as a keyword argument to the view. The angle brackets may
include a converter specification (like the int
part of <int:section>
)
which limits the characters matched and may also change the type of the
variable passed to the view. For example, <int:section>
matches a string
of decimal digits and converts the value to an int
.
When processing a request, Django starts at the first pattern in
urlpatterns
and makes its way down the list, comparing the requested URL
against each pattern until it finds one that matches. See
Django 如何处理一个请求 for more details.
Patterns don't match GET and POST parameters, or the domain name. For example,
in a request to https://www.example.com/myapp/
, the URLconf will look for
myapp/
. In a request to https://www.example.com/myapp/?page=3
, the
URLconf will also look for myapp/
.
view
¶
The view
argument is a view function or the result of
as_view()
for class-based views. It can
also be a django.urls.include()
.
When Django finds a matching pattern, it calls the specified view function with
an HttpRequest
object as the first argument and any
"captured" values from the route as keyword arguments.
kwargs
¶
kwargs
参数允许你向视图函数或方法传递附加参数。参见 传递额外选项给视图函数 的例子。
name
¶
为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。
关于为什么 name
参数是有用的,请参见 命名 URL 模式。
re_path()
¶
- re_path(route, view, kwargs=None, name=None)¶
返回一个元素,以便包含在 urlpatterns
中。例如:
from django.urls import include, re_path
urlpatterns = [
re_path(r"^index/$", views.index, name="index"),
re_path(r"^bio/(?P<username>\w+)/$", views.bio, name="bio"),
re_path(r"^blog/", include("blog.urls")),
...,
]
route
参数应该是一个字符串或 gettext_lazy()
(参见 翻译URL模式),它包含一个与 Python 的 re
模块兼容的正则表达式。字符串通常使用原始字符串语法(r''
),因此它们可以包含像 /d
这样的序列,而不需要用另一个反斜杠来转义。当进行匹配时,从正则表达式中捕获的组会被传递到视图中 —— 如果组是命名的,则作为命名的参数,否则作为位置参数。值以字符串的形式传递,不进行任何类型转换。
当一个 route
以 $
结尾时,整个请求的 URL(与 path_info
匹配)必须与正则表达式模式相匹配(使用 re.fullmatch()
进行匹配)。
view
、kwargs
和 name
参数与 path()
相同。
include()
¶
- include(module, namespace=None)[源代码]¶
- include(pattern_list)
- include((pattern_list, app_namespace), namespace=None)
一个函数,它接收一个完整的 Python 导入路径到另一个应该被 “包含” 在这里的 URLconf 模块。可以选择指定 application namespace 和 instance namespace,在这两个空间中,条目将被包含进去。
通常,应用程序的命名空间应该由包含的模块指定。如果设置了应用程序命名空间,
namespace
参数可以用来设置不同的实例命名空间。include()
也接受一个返回 URL 模式的迭代函数或一个包含这种迭代函数加上应用程序名称空间的二元元组作为参数。
register_converter()
¶
注册一个转换器的函数,用于 path()
的 route
。
converter
参数是一个转换器类,type_name
是路径模式中使用的转换器名称。参见 注册自定义的路径转换器 的例子。
自 5.1 版本弃用: Overriding existing converters is deprecated.
URLconfs 中使用的 django.conf.urls
函数¶
static()
¶
- static.static(prefix, view=django.views.static.serve, **kwargs)¶
用于返回在调试模式下服务文件的 URL 模式的辅助函数:
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)
handler400
¶
- handler400¶
一个可调用对象,或者一个代表视图的完整 Python 导入路径的字符串,如果 HTTP 客户端发送了一个引起错误条件的请求,并且响应的状态码为 400,那么就会调用该视图。
默认情况下,这是 django.views.defaults.bad_request()
。如果你实现了自定义视图,请确保它接受 request
和 exception
参数,并返回一个 HttpResponseBadRequest
。
handler403
¶
- handler403¶
一个可调用对象,或者一个代表视图的完整 Python 导入路径的字符串,如果用户没有访问资源所需的权限,那么就会调用该视图。
默认情况下,这是 django.views.defaults.permission_denied()
。如果你实现了一个自定义视图,请确保它接受 request
和 exception
参数,并返回一个 HttpResponseForbidden
。
handler404
¶
- handler404¶
一个可调用对象,或者一个代表视图的完整 Python 导入路径的字符串,如果没有任何 URL 模式匹配,那么就会调用该视图。
默认情况下,这是 django.views.defaults.page_not_found()
。如果你实现了自定义视图,请确保它接受 request
和 exception
参数,并返回一个 HttpResponseNotFound
。
handler500
¶
- handler500¶
一个可调用对象,或者一个代表视图的完整 Python 导入路径的字符串,在服务器出错时会被调用。当你在视图代码中出现运行时错误时,就会发生服务器错误。
默认情况下,这是 django.views.defaults.server_error()
。如果你实现了自定义视图,请确保它接受一个 request
参数,并返回一个 HttpResponseServerError
。