关于django2中url

路由是关联url及其处理函数关系的过程。django的url路由配置在settings.py文件中root_urlconf变量指定全局路由文件名称。

django的路由都写在urls.py文件中的urlpatterns列表中,由path()或re_path()作为元素组成。

django的url路由流程:

1 django查找全局urlpatterns变量(urls.py

2 按照先后顺序,对url逐一匹配urlpatterns每个元素

3 找到第一个匹配时停止查找,根据匹配结果执行对应的处理函数。

4 如果没有找到匹配或出现异常,django进行错误处理

注意:

django的路由不考虑http请求方式,仅根据url进行路由,即,只要url相同,无论post、get等哪种请求方式都指向同一个操作函数。

urlpatterns中的path()处理字符串路由,re_path处理正则表达式路由。

其格式:

urlpatterns=[

path(route,views.函数名,向处理函数提供的额外参数,以字典形式表示,该url模式的别名),

re_path(正则表达式,view.对应的处理函数)

]

其中正则表达式可以看做字符串的模式。

django支持三种表达route:

1、 精确字符串格式:articles/2017/

一个精确url匹配一个操作函数;最简单的形式,适合对静态url的响应;url字符串不以“/”开头,但要以“/”结尾

2、 django的转换格式:<类型:变量名>,articles/int:year/

是一个url模版,匹配url同时在其中获得一批变量作为参数;是一种常用形式,目的是通过url进行参数获取和传递
3、 正则表达式格式:articles/(?p[0-9]{4})/

借助正则表达式丰富语法表达一类url(而不是一个);可以通过<>提取变量作为处理函数的参数,高级用法;使用该方法时,前面不能使用path()函数,必须使用re_path()函数;表达的全部是str格式,不能是其他类型。

两种形式:不提取参数,比如re_path(articles/([0-9]{4}/,表示四位数字,每一个数字都是0到9的任意数字;提取参数,命名形式(?ppattern),比如re_path(articles/(?p[0-9]{4})/,将正则表达式提取的四位数字,每一个数字都是0到9的任意数字命名为year,

猜你喜欢

转载自blog.csdn.net/weixin_41571948/article/details/87294512