django.urls
用于 URLconf 中的函数¶
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
¶
route
参数应为字符串或 gettext_lazy()
(参见 翻译 URL 模式),其中包含 URL 模式。该字符串可以包含尖括号(如上面的 <username>
),以捕获 URL 的一部分并将其作为关键字参数发送到视图。尖括号可以包含转换器规范(如 <int:section>
的 int
部分),它限制了匹配的字符,并且还可以更改传递给视图的变量的类型。例如,<int:section>
匹配十进制数字的字符串并将值转换为 int
。
在处理请求时,Django 从 urlpatterns
中的第一个模式开始,并向下遍历列表,将请求的 URL 与每个模式进行比较,直到找到一个匹配的模式。有关更多详细信息,请参见 Django 如何处理请求。
模式不匹配 GET 和 POST 参数或域名。例如,在对 https://www.example.com/myapp/
的请求中,URLconf 将查找 myapp/
。在对 https://www.example.com/myapp/?page=3
的请求中,URLconf 也将查找 myapp/
。
view
¶
view
参数是视图函数或基于类的视图的 as_view()
的结果。它也可以是 django.urls.include()
。
当 Django 找到匹配的模式时,它会调用指定的视图函数,并将 HttpRequest
对象作为第一个参数,并将路由中捕获的任何值作为关键字参数。
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
以 $
结尾时,与 path_info
匹配的整个请求 URL 必须与正则表达式模式匹配(使用 re.fullmatch()
)。
view
、kwargs
和 name
参数与 path()
的参数相同。
include()
¶
- include(module, namespace=None)[source]¶
- include(pattern_list)
- include((pattern_list, app_namespace), namespace=None)
一个函数,它接受另一个 URLconf 模块的完整 Python 导入路径,该模块应在此处“包含”。可选地,还可以指定条目将包含到的 应用程序命名空间 和 实例命名空间。
通常,应用程序命名空间应由包含的模块指定。如果设置了应用程序命名空间,则可以使用
namespace
参数设置不同的实例命名空间。include()
还接受一个参数,该参数要么是返回 URL 模式的可迭代对象,要么是包含此类可迭代对象加上应用程序命名空间名称的 2 元组。
register_converter()
¶
用于注册转换器以便在 path()
路由中使用的函数。
converter
参数是一个转换器类,type_name
是在路径模式中使用的转换器名称。请参阅 注册自定义路径转换器 以获取示例。
自版本 5.1 起已弃用: 覆盖现有转换器已弃用。
django.conf.urls
用于 URLconf 的函数¶
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¶
一个可调用对象,或一个字符串,表示如果 HTTP 客户端发送了导致错误状况的请求并且响应状态码为 400,则应调用的视图的完整 Python 导入路径。
默认情况下,它是 django.views.defaults.bad_request()
。如果您实现了自定义视图,请确保它接受 request
和 exception
参数并返回 HttpResponseBadRequest
。
handler403
¶
- handler403¶
一个可调用对象,或一个字符串,表示如果用户没有访问资源所需的权限,则应调用的视图的完整 Python 导入路径。
默认情况下,它是 django.views.defaults.permission_denied()
。如果您实现了自定义视图,请确保它接受 request
和 exception
参数并返回 HttpResponseForbidden
。
handler404
¶
- handler404¶
一个可调用对象,或一个字符串,表示如果没有任何 URL 模式匹配,则应调用的视图的完整 Python 导入路径。
默认情况下,它是 django.views.defaults.page_not_found()
。如果您实现了自定义视图,请确保它接受 request
和 exception
参数并返回 HttpResponseNotFound
。
handler500
¶
- handler500¶
一个可调用对象,或一个字符串,表示在发生服务器错误时应调用的视图的完整 Python 导入路径。服务器错误发生在视图代码中出现运行时错误时。
默认情况下,它是 django.views.defaults.server_error()
。如果您实现了自定义视图,请确保它接受 request
参数并返回 HttpResponseServerError
。