django.urls 用于 URLconfs 的函数¶
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 模式进行全局更改,而只需修改单个文件。
请参阅 命名 URL 模式 以了解为什么 name 参数很有用。
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)[source]¶
- include(pattern_list)
- include((pattern_list, app_namespace), namespace=None)
该函数接收一个指向另一个应该在此处“包含”的 URLconf 模块的完整 Python 导入路径。还可以选择指定条目将被包含进去的 应用命名空间 和 实例命名空间。
通常,应用命名空间应由被包含的模块指定。如果设置了应用命名空间,则
namespace参数可用于设置不同的实例命名空间。include()还接受一个可迭代对象(返回 URL 模式)或一个包含该可迭代对象及应用命名空间名称的 2-元组作为参数。
register_converter()¶
用于注册在 path() 路由(route)中使用的转换器的函数。
converter 参数是一个转换器类,type_name 是在路径模式中使用的转换器名称。请参阅 注册自定义路径转换器 以获取示例。
django.conf.urls 用于 URLconfs 的函数¶
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。