Django中url与path及re_path区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django中url与path及re_path区别相关的知识,希望对你有一定的参考价值。

参考技术A 初学者 一般不能分清两者的区别,所这简单介绍下两者.首先,url是Django 1.x中的写法,p在Django2.1中,开始舍弃django1.x中的url写法。在django2.x中,描写url配置的有两个函数path和re_path.re_path()函数可以看做是django 1.x中得url函数,即可以在路径中使用正则.

path与url是两个不同的模块,效果都是响应返回页面, path调用的是python第三方模块或框架,而url则是自定义的模块,如Views下的def函数对应你url中的参数值.

例如:

在settings.py文件中有一个ROOT_URLCONF设置,设置的是在访问网址时通过哪一个url文件去匹配所请求的网址

url或者re_path要复杂一些 (r’^blog/(?P[0-9]4)/′)首先需要开始符和结尾符 ') 首先需要开始符^和结尾符 ′)首先需要开始符和结尾符,参数匹配一个 ()就是一个匹配参数,
(?P<匹配的字段名>正则表达式)

进行匹配是不包括get或者post请求方式的参数及域名比如 www.qq.com/blog?num=1 并不会匹配?后边的字符

可以给request参数设置一个默认值,最常见的分页url,比如

自定义错误页面关键字handler400=blog.views.page_no_find

参数的使用方法path(‘blog/str:string/’) 简单了很多,就是尖括号,前边是str代表参数的类型,后面代表参数的名称

捕获url中的参数需要用到尖括号<> 指定尖括号中的值类型比如int:astr:link这个转换器还有许多类型比如:

如果遇上路径和转换器语法都不足以定义的URL模式,那么就需要使用正则表达式,这时候就需要使用re_path(),而非path()。

举例:传递 数字结尾的参数

在python3中使用django2的时候,在设置urls的时候,会遇到一些坑。这里做一下记录。
系统的urls.py里,在1.X的时候,都是采用的url方式。如下

在2.0中,它推荐使用的是path模块,所以这里就改写一下。引包

注意:

1.x里面的写法是

现在的写法

这样一对比就能明白了吧,使用的链接是 http://127.0.0.1:8000/page=12&key=abc

1.x中写法

可是在2.0中你这么写,会报错,说什么app_name的,这个自己可以看一下,怎么解决呢,其实很简单,只要在自己项目urls.py中加上这句就行了.如果不加的话可能报错,

注:

以上是关于Django中url与path及re_path区别的主要内容,如果未能解决你的问题,请参考以下文章

Django视图层

re_path 的 Django 模板 url NoReverseMatch

5.Django路由path和re_path详解

5.Django路由path和re_path详解

Django2.0路由补充之path,re_path及视图层

Django 路由层(urlconf)