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 相关文章推荐
Django基础之Model操作步骤(介绍)
May 27 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
python实现批量注册网站用户的示例
Feb 22 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
Jun 26 Python
python多线程与多进程及其区别详解
Aug 08 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
python不使用for计算两组、多个矩形两两间的iou方式
Jan 18 Python
Python任务调度模块APScheduler使用
Apr 15 Python
Python3.7下安装pyqt5的方法步骤(图文)
May 12 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
Python基础详解之描述符
Apr 28 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.ini中文版(1)
2006/10/09 PHP
PHP学习之数组值的操作
2011/04/17 PHP
php使用PDO方法详解
2014/12/27 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
Python版微信红包分配算法
2015/05/04 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
python 数据的清理行为实例详解
2017/07/12 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
python yield关键词案例测试
2019/10/15 Python
Python面向对象封装操作案例详解
2019/12/31 Python
python自动点赞功能的实现思路
2020/02/26 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
英语自我评价范文
2014/01/24 职场文书
物流业务员岗位职责
2014/02/08 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript