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 相关文章推荐
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
python实现保存网页到本地示例
Mar 16 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
深入理解Django的自定义过滤器
Oct 17 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
教你使用python实现微信每天给女朋友说晚安
Mar 23 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 Python
详解Python中的分组函数groupby和itertools)
Jul 11 Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 Python
python每5分钟从kafka中提取数据的例子
Dec 23 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
Python3内置函数chr和ord实现进制转换
Jun 05 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
thinkphp分页集成实例
2017/07/24 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
python 美化输出信息的实例
2018/10/15 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
西班牙灯具网上商店:Lampara.es
2018/06/05 全球购物
护士岗位职责
2014/02/16 职场文书
物理学专业自荐信
2014/06/11 职场文书
党建目标管理责任书
2014/07/25 职场文书
新兵入伍心得体会
2014/09/04 职场文书
教师个人考察材料
2014/12/16 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
母亲节感言
2015/08/03 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL