Code前端首页关于Code前端联系我们

Django中url、path、re_path的区别

terry 2年前 (2023-09-24) 阅读数 78 #后端开发

新手不知道如何设置路由。他不确定是使用url还是path。今天我们就一起来研究一下。

1。常用方法介绍

Django框架提供了多种生成urlpattern对象的方法。以下是一些较常见的情况。

1。 include()方法

该方法的目的是避免将所有显示函数放在项目文件夹的根文件urls.py中。

『例如:』Django中url、path及re_path区别

2. url() 方法

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

此方法将返回一个 urlpatterns 对象。通过源码我们发现本质还是调用 re_path 方法,Django不再推荐这种用法。

如果您将来看到此路由方法有效,请不要感到惊讶。只要知道它可以这样使用就可以了。 Django中url、path及re_path区别

3。 path()方法

创建项目时默认使用这个,可见官方也是推荐的。 Django中url、path及re_path区别

path(route, view, kwargs=None, name=None)

此方法返回一个具有多个参数的urlpatterns 对象。参数含义如下:

route:表示匹配的url。此参数是必需的。

view:表示路由调用的对象,可以是具体函数的形式。

kwargs:可以将任意数量的变量以字典的形式传递给目标显示函数。

name:用于定义路由别名。

4。 re_path()方法

如果有正则路由匹配的需求,可以使用re_path

path(route, view, kwargs=None, name=None)

route:只有正则表达式匹配,才会将相关的正则表达式捕获组信息传递给路由调用的对象。此参数是必需的。

view:用于表示路由调用的对象,可以体现为具体的函数形式或者视图类的as_view()方法调用的结果。

kwargs:可以将任意数量的变量以字典的形式传递给目标显示函数。

name:用于定义路由别名。

其他还有:register_converter(),该方法是注册自定义转换器; static()方法加载相关的静态资源信息。? 。

# 创建工程和应用
django-admin startproject BookInfo

django-admin startapp  Article
Django中url、path及re_path区别

如下方法“也”创建项目和应用:

python -m django  startproject blog

python -m django  startapp article
Django中url、path及re_path区别

项目代码如下

Django中url、path及re_path区别

启动Django服务❀❀❀ 1. 9000 当你如果看到下图,说明服务已经正常启动。 ?显示 文件。 ? :』

输入以下四个地址:http://127.0.0.1:9000/path/、http://127.0.0.1:9000/repath1/、http://127.0.0.1:9000/url1/、一切都会出现结果如下图所示:Django中url、path及re_path区别Django中url、path及re_path区别Django中url、path及re_path区别

「path()方法不支持普通模式」,如下图:Django中url、path及re_path区别

「示例2:」

回车以下四个地址:http://127.0.0.1:9000/repathA100/、http://127.0.0.1:9000/urlA100/、http://127.0.0.1:9000/repathAA100/、http://127.0。 0.1:9000/urlAA100/,都会出现下图所示的结果。 Django中url、path及re_path区别Django中url、path及re_path区别Django中url、path及re_path区别Django中url、path及re_path区别

『示例3:』

输入以下三个地址:http://127.0.0.1:9000/repathM/ 或 http://127.0.0.1:9000/urlM/, http://127.0.01 。 :9000/pathM/,就会出现下图所示的结果:Django中url、path及re_path区别Django中url、path及re_path区别Django中url、path及re_path区别

4。简单总结一下

如果遇到“路径”“转换器”语法(类似>)不足以定义 URL - 模式,那么你必须使用正则表达式。在这种情况下,您必须使用 re_path() ,而不是 path()。至于 url() 方法,已被官方弃用。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门