django.urls 用于urlconfs的函数¶path()¶返回要包含在中的元素 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 的一部分 <int:section> )这会限制匹配的字符,并且还可能更改传递给视图的变量的类型。例如, <int:section> 匹配一串小数并将值转换为 int .
处理请求时,Django从中的第一个模式开始 urlpatterns 并沿着列表向下移动,将请求的URL与每个模式进行比较,直到找到匹配的URL。看到 Django如何处理请求 了解更多详细信息。
模式与GET和Post参数或域名不匹配。例如,在请求中 https://www.example.com/myapp/ ,URLinf将寻找 myapp/ .的请求中 https://www.example.com/myapp/?page=3 ,URLinf也会寻找 myapp/ .
view¶的 view 参数是视图函数或 as_view() 用于基于类别的视图。它也可以是一个 django.urls.include() .
当Django找到匹配的模式时,它会使用 HttpRequest 对象作为第一个参数,并从路径中的任何“捕获”值作为关键字参数。
kwargs¶这个 kwargs 参数允许您将其他参数传递给视图函数或方法。见 传递额外的选项以查看函数 举个例子。
name¶验证您的URL可以让您从Django的其他地方明确引用它,尤其是在模板内。这个强大的功能允许您对项目的URL模式进行全局更改,同时仅触摸单个文件。
见 Naming URL patterns 为什么 name 参数是有用的。
re_path()¶返回要包含在中的元素 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 参数与for相同 path() .
include()¶将完整的python导入路径带到另一个urlconf模块的函数,该模块应在此位置“包含”。可选地, application namespace 和 instance namespace 也可以指定将包含在其中的条目。
通常,应用程序命名空间应由包含的模块指定。如果设置了应用程序命名空间,则 namespace 参数可用于设置其他实例命名空间。
include() 还接受返回URL模式的iterable或包含此类iterable和应用程序命名空间名称的2元组作为参数。
register_converter()¶用于注册转换器的函数。 path() route S
这个 converter 参数是转换器类,并且 type_name 是要在路径模式中使用的转换器名称。见 注册自定义路径转换器 举个例子。
django.conf.urls 用于urlconfs的函数¶static()¶helper函数返回用于在调试模式下提供文件的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¶一个可调用的,或一个表示视图的完整python导入路径的字符串,如果HTTP客户端发送了一个导致错误条件和状态代码为400的响应的请求,则应调用该路径。
默认情况下,这是 django.views.defaults.bad_request() . 如果实现自定义视图,请确保它接受 request 和 exception 参数并返回 HttpResponseBadRequest .
handler403¶一个可调用的,或一个表示视图的完整python导入路径的字符串,如果用户没有访问资源所需的权限,则应调用该路径。
默认情况下,这是 django.views.defaults.permission_denied() . 如果实现自定义视图,请确保它接受 request 和 exception 参数并返回 HttpResponseForbidden .
handler404¶一个可调用的,或一个表示视图的完整python导入路径的字符串,如果没有匹配的URL模式,则应调用该路径。
默认情况下,这是 django.views.defaults.page_not_found() . 如果实现自定义视图,请确保它接受 request 和 exception 参数并返回 HttpResponseNotFound .
handler500¶可调用的,或表示视图的完整python导入路径的字符串,在服务器出错时应调用该路径。当视图代码中有运行时错误时,会发生服务器错误。
系统默认 django.views.defaults.server_error() .如果实现自定义视图,请确保它接受 request 参数并返回 HttpResponseServerError 。
5月 28, 2025