Django正则URL匹配实现流程解析


Posted in Python onNovember 13, 2020

一、引子

在day17 作业中,我们查看主机详细信息的时候,是通过 在url 中拼接,传参数。urls 中匹配 path("detail/",views.detail)

Django正则URL匹配实现流程解析

这样url 变成类似 http://127.0.0.1:8000/detail/?nid=2 今天我们来学习,类似http://127.0.0.1:8000/detail-3.html 这样的URL

据说,以前我们使用的方式 ,在seo 时候算是动态页面,后面这种方式算静态页面。可能在做搜索优化的时候有好处吧。

二、开搞栗子

忽略掉数据库,先在 views 新建一个用户字典

2.1 动态页面的栗子

views 代码:

info_dic={
  1:{"name":"zhangsan","email":"zhangsan@163.com","age":22},
  2:{"name":"lisi","email":"lisi@163.com","age":27},
  3:{"name":"wangwu","email":"wangwu@163.com","age":29},
  4:{"name":"laoliu","email":"laoliu@163.com","age":30},
  5:{"name":"chenpi","email":"chenpi@163.com","age":32},
}

def index(request):
  return render(request,"index.html",{"info_dic":info_dic})


def detail(request):
  nid=request.GET.get("nid")
  print(nid,type(nid))
  info=info_dic.get(int(nid))
  print(info)
  return render(request,"detail.html",{"info":info})

urls

Django正则URL匹配实现流程解析

前端,index.html,

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <h1>用户信息</h1>

  <ul>
    {% for k,v in info_dic.items %}
      <li><a target="_blank" href="/detail/?nid={{ k }}" rel="external nofollow" >{{ v.name }}</a></li>
    {% endfor %}

  </ul>
</body>
</html>

前端,detail

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <h1>用户详细信息</h1>

  <ul>
    <li>name:{{ info.name }}</li>
    <li>email:{{ info.email }}</li>
    <li>age:{{ info.age }}</li>
  </ul>
</body>
</html>

结果:

Django正则URL匹配实现流程解析

Django正则URL匹配实现流程解析

2.2 下面用 正则表达式来 搞URL 匹配,静态页面,

urls

Django正则URL匹配实现流程解析

views ,

直接在函数中传参数,nid 形式参数。不像之前需要自己到 reques.method 中去取

Django正则URL匹配实现流程解析

结果

Django正则URL匹配实现流程解析

上面的栗子中,我们得知参数是通过形参传递的,类似定义函数的形参数,

下面再搞一个栗子验证

Django正则URL匹配实现流程解析

Django正则URL匹配实现流程解析

Django正则URL匹配实现流程解析

Django正则URL匹配实现流程解析

参数位置变换后 ,获取的数值也变了

Django正则URL匹配实现流程解析

三、分组传参

在上面的栗子中,我们知道如果不分组,那么参数就是类似函数的位置参数,靠天吃饭,

很显然,这样不方便我们在实际的使用中去调用。那么使用关键字参数呢,在URL 匹配中就需要分组

下面搞栗子,变换nid,uid 位置之后,打印的结果是一样的。

Django正则URL匹配实现流程解析

位置参数可以在 *arg 中获取,关键字参数可以在 **kwargs 中获取

Django正则URL匹配实现流程解析

四、总结

路由系统:URL

  • 普通url:re_path('^index/',view.index),re_path('^home/',view.Home.as_view())
  • 顺序传参:re_path(r'^detail-(\d+)-(\d+).html/',views.detail),这个用*args接收
  • 关键字传参:re_path(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html/',views.detail),这个用**kwargs接收,推荐使用这个

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中操作MySQL入门实例
Feb 08 Python
使用Python对IP进行转换的一些操作技巧小结
Nov 09 Python
python 判断是否为正小数和正整数的实例
Jul 23 Python
Python实现计算字符串中出现次数最多的字符示例
Jan 21 Python
Python多线程threading模块用法实例分析
May 22 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
Feb 20 Python
Pandas把dataframe或series转换成list的方法
Jun 14 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
Python Pillow(PIL)库的用法详解
Sep 19 Python
一文带你掌握Pyecharts地理数据可视化的方法
Feb 06 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 Python
Django框架请求生命周期实现原理
Nov 13 #Python
python在地图上画比例的实例详解
Nov 13 #Python
python语言实现贪吃蛇游戏
Nov 13 #Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 #Python
python切割图片的示例
Nov 12 #Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 #Python
Django执行源生mysql语句实现过程解析
Nov 12 #Python
You might like
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
PHP获取windows登录用户名的方法
2014/06/24 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
Python爬取读者并制作成PDF
2015/03/10 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
对Python 数组的切片操作详解
2018/07/02 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
2014年端午节演讲稿范文
2014/05/23 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
南湾猴岛导游词
2015/02/09 职场文书
英文自荐信范文
2015/03/25 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis