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() 进行匹配)。

viewkwargsname 参数与 path() 相同。

include()

include(module, namespace=None)[源代码]
include(pattern_list)
include((pattern_list, app_namespace), namespace=None)

一个函数,它接收一个完整的 Python 导入路径到另一个应该被 “包含” 在这里的 URLconf 模块。可以选择指定 application namespaceinstance namespace,在这两个空间中,条目将被包含进去。

通常,应用程序的命名空间应该由包含的模块指定。如果设置了应用程序命名空间,namespace 参数可以用来设置不同的实例命名空间。

include() 也接受一个返回 URL 模式的迭代函数或一个包含这种迭代函数加上应用程序名称空间的二元元组作为参数。

参数:
  • module -- URLconf 模块(或模块名称)

  • namespace (str) -- 包含的 URL 条目的实例命名空间。

  • pattern_list -- 可迭代的 path() 和/或 re_path() 实例。

  • app_namespace (str) -- 被包含的 URL 条目的应用命名空间

参见 包含其它的URLconfsURL 命名空间和包含的 URLconfs

register_converter()

register_converter(converter, type_name)[源代码]

注册一个转换器的函数,用于 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()。如果你实现了自定义视图,请确保它接受 requestexception 参数,并返回一个 HttpResponseBadRequest

handler403

handler403

一个可调用对象,或者一个代表视图的完整 Python 导入路径的字符串,如果用户没有访问资源所需的权限,那么就会调用该视图。

默认情况下,这是 django.views.defaults.permission_denied()。如果你实现了一个自定义视图,请确保它接受 requestexception 参数,并返回一个 HttpResponseForbidden

handler404

handler404

一个可调用对象,或者一个代表视图的完整 Python 导入路径的字符串,如果没有任何 URL 模式匹配,那么就会调用该视图。

默认情况下,这是 django.views.defaults.page_not_found()。如果你实现了自定义视图,请确保它接受 requestexception 参数,并返回一个 HttpResponseNotFound

handler500

handler500

一个可调用对象,或者一个代表视图的完整 Python 导入路径的字符串,在服务器出错时会被调用。当你在视图代码中出现运行时错误时,就会发生服务器错误。

默认情况下,这是 django.views.defaults.server_error()。如果你实现了自定义视图,请确保它接受一个 request 参数,并返回一个 HttpResponseServerError

Back to Top