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基于tkinter模块实现的改名小工具示例
Jul 27 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
numpy中loadtxt 的用法详解
Aug 03 Python
浅析python参数的知识点
Dec 10 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
实例详解Python模块decimal
Jun 26 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
python实现杨辉三角的几种方法代码实例
Mar 02 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程序
2012/02/04 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
Yii2如何批量添加数据
2016/05/17 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
python批量获取html内body内容的实例
2019/01/02 Python
python实现图片九宫格分割
2021/03/07 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
线程同步的方法
2016/11/23 面试题
区域销售经理岗位职责
2013/12/10 职场文书
法人代表证明书格式
2014/10/01 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL
java设计模式--七大原则详解
2021/07/21 Java/Android
nginx共享内存的机制详解
2022/03/21 Servers