django-路由-通过正则表达式来捕获路径-对应视图函数

服务器处理网址的请求流程

》一个网址请求服务器,通过浏览器

》服务端,项目中的urls.py来处理这个请求

通过路由对应关系,匹配网址与对应视图函数的关系

如果一个网址匹配成功,那么就由它所对应的视图函数来处理功能

》视图函数的处理一般要操作两个部分

1,取数据

与数据库的连通, 通过orm来操作数据库(增删改查)

2,展现数据

主要通过render函数来操作

格式

render(请求对象,模板文件,传输的数据)

最终把render进行返回

重点关注urls.py这个文件

文件的功能

请求路径与视图函数的对应关系

常用的方法

》path()

完全匹配

path('car/', views.car),

》re_path()

  • 导入
    from django.urls import re_path

  • 使用

格式

re_path(正则表达式,视图函数)

请求网址路径中只要有cat,匹配成功

re_path(r"cat",视图函数)

效果:

当用户访问

127.0.0.1/abcatefg/

演示:

路由

django-路由-通过正则表达式来捕获路径-对应视图函数_第1张图片
视图

django-路由-通过正则表达式来捕获路径-对应视图函数_第2张图片

效果:
django-路由-通过正则表达式来捕获路径-对应视图函数_第3张图片

django-路由-通过正则表达式来捕获路径-对应视图函数_第4张图片
django-路由-通过正则表达式来捕获路径-对应视图函数_第5张图片

当前的效果

只要请求的路径里包含cat,就可以对应上视图函数

只允路径刚好为cat的时候进来

》思路,限定路径的开头和结尾

限定以c开头,限定以t结尾

正则匹配的内容写死,刚好就写成cat

正则式

django-路由-通过正则表达式来捕获路径-对应视图函数_第6张图片

效果与分析

一,

django-路由-通过正则表达式来捕获路径-对应视图函数_第7张图片
参与匹配的路径是

cat

该路径会和正则中的,匹配

django-路由-通过正则表达式来捕获路径-对应视图函数_第8张图片

二,

django-路由-通过正则表达式来捕获路径-对应视图函数_第9张图片

为什么不成功?

因为当前参与匹配的字符串是

cat/

它与正则式 r’^cat$’ 不能匹配成功

所以进不了对应的视图,报404错误

实现cat/123这种格式的匹配

要求,必需有cat开头,必需以数字结束

正则路由的写法

django-路由-通过正则表达式来捕获路径-对应视图函数_第10张图片

效果
django-路由-通过正则表达式来捕获路径-对应视图函数_第11张图片

实现cat/任意多的数字的匹配

只需要把数字那里的位置写成正则式就可以了

django-路由-通过正则表达式来捕获路径-对应视图函数_第12张图片
当前正则式的意思是

以cat开头

以数字结尾($在修饰\d)

数字可以是一次或者多次出现, 因为有加号

效果

django-路由-通过正则表达式来捕获路径-对应视图函数_第13张图片

结尾为非数字,就报错

django-路由-通过正则表达式来捕获路径-对应视图函数_第14张图片

另一例
django-路由-通过正则表达式来捕获路径-对应视图函数_第15张图片

获取路径中的数据,获取cat/123路径中的123

想要在后端拿到这串数字

》办法

一,在正则表达式中,把要获取的内容,用括号包起来

二,括号中包的内容,会作为位置参数,传递给视图函数

django-路由-通过正则表达式来捕获路径-对应视图函数_第16张图片

django-路由-通过正则表达式来捕获路径-对应视图函数_第17张图片

django-路由-通过正则表达式来捕获路径-对应视图函数_第18张图片

获取一个动态的数据,cat/数字,要获取这个串数字

用括号把要获取的数据的正则式包起来

当前用\d匹配一切数字

用+对\d进行限定,表明至少得有一个或者无数个

正则式:
django-路由-通过正则表达式来捕获路径-对应视图函数_第19张图片

视图:

django-路由-通过正则表达式来捕获路径-对应视图函数_第20张图片

结果:

django-路由-通过正则表达式来捕获路径-对应视图函数_第21张图片

练习

目标

拿到cat/ 和 /123 之间包裹的内容

比如:下面的路径,要拿hello
django-路由-通过正则表达式来捕获路径-对应视图函数_第22张图片
下面的路径要拿python
django-路由-通过正则表达式来捕获路径-对应视图函数_第23张图片

你可能感兴趣的:(django-路由-通过正则表达式来捕获路径-对应视图函数)