用于 URLconfs 的 django.urls 函数 — Django 文档

来自菜鸟教程
Django/docs/3.2.x/ref/urls
跳转至:导航、​搜索

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('weblog/', include('blog.urls')),
    ...
]

route 参数应该是包含 URL 模式的字符串或 gettext_lazy()(请参阅 翻译 URL 模式)。 该字符串可能包含尖括号(如上面的 <username>)以捕获 URL 的一部分并将其作为关键字参数发送到视图。 尖括号可能包含一个转换器规范(如 <int:section>int 部分),它限制了匹配的字符,也可能改变传递给视图的变量的类型。 例如,<int:section> 匹配一串十进制数字并将值转换为 int。 有关更多详细信息,请参阅 Django 如何处理请求

view 参数是一个视图函数或 as_view() 的结果,用于基于类的视图。 它也可以是 django.urls.include()

kwargs 参数允许您将附加参数传递给视图函数或方法。 有关示例,请参阅 传递额外选项以查看函数

请参阅 Naming URL patterns 了解为什么 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'^weblog/', include('blog.urls')),
    ...
]

route 参数应该是包含与 Python 的 re 模块兼容的正则表达式的字符串或 gettext_lazy()(参见 翻译 URL 模式)。 字符串通常使用原始字符串语法 (r),这样它们就可以包含像 \d 这样的序列,而无需用另一个反斜杠转义反斜杠。 当匹配时,正则表达式中捕获的组被传递到视图——如果组被命名,则作为命名参数,否则作为位置参数。 值作为字符串传递,没有任何类型转换。

viewkwargsname 参数与 path() 相同。


include()

include(module, namespace=None)
include(pattern_list)
include((pattern_list, app_namespace), namespace=None)

一个函数,它将完整的 Python 导入路径带到另一个应该“包含”在这个地方的 URLconf 模块。 或者,也可以指定 应用程序命名空间实例命名空间 ,其中条目将被包含在其中。

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

include() 还接受返回 URL 模式的可迭代对象或包含此类可迭代对象和应用程序命名空间名称的 2 元组作为参数。

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

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

  • pattern_listpath() 和/或 re_path() 实例的迭代。

  • app_namespace (str) – 包含的 URL 条目的应用程序命名空间

请参阅 包含其他 URLconfsURL 命名空间以及包含的 URLconfs


register_converter()

register_converter(converter, type_name)

用于注册转换器以用于 path() routes 的函数。

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)

url()

url(regex, view, kwargs=None, name=None)

该函数是 django.urls.re_path() 的别名。

自 3.1 版起已弃用: 别名 django.urls.re_path() 以实现向后兼容性。


handler400

handler400

如果 HTTP 客户端发送了导致错误条件的请求和状态代码为 400 的响应,则可调用或表示视图的完整 Python 导入路径的字符串。

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


handler403

handler403

如果用户没有访问资源所需的权限,则可调用或表示视图的完整 Python 导入路径的字符串。

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


handler404

handler404

如果没有任何 URL 模式匹配,则表示应调用视图的完整 Python 导入路径的可调用对象或字符串。

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


handler500

handler500

一个可调用的,或者一个字符串,表示在服务器错误的情况下应该调用的视图的完整 Python 导入路径。 当您在视图代码中出现运行时错误时,就会发生服务器错误。

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