Django框架反向解析操作详解


Posted in Python onNovember 28, 2019

本文实例讲述了Django框架反向解析操作。分享给大家供大家参考,具体如下:

1. 定义:

随着功能的增加会出现更多的视图,可能之前配置的正则表达式不够准确,于是就要修改正则表达式,但是正则表达式一旦修改了,之前所有对应的超链接都要修改,真是一件麻烦的事情,而且可能还会漏掉一些超链接忘记修改,有办法让链接根据正则表达式动态生成吗? 就是用反向解析的办法。

2. 应用范围:

  • 模板中的超链接
  • 视图中的重定向

3. 使用方法:

  • 定义url时,需要为include定义namespace属性,为url定义name属性
  • 使用时,在模板中使用url标签,在视图中使用reverse函数,根据正则表达式动态生成地址,减轻后期维护成本。

4. 模板中超链接步骤:

1)在项目urls.py中为include定义namespace属性。

url(r'^',include('booktest.urls',namespace='booktest')),

2)在应用的urls.py中为url定义name属性,并修改为fan2。

url(r'^fan2/$', views.fan2,name='fan2'),

3)在模板中使用url标签做超链接,此处为templates/booktest/fan1.html文件。

<html>
<head>
  <title>反向解析</title>
</head>
<body>
普通链接:<a href="/fan2/" rel="external nofollow" >普通fan2</a>
<hr>
反向解析:<a href="{%url 'booktest:fan2'%}" rel="external nofollow" >反向解析fan2</a>
</body>
</html>

4)回到浏览器中,后退,刷新,查看源文件,两个链接地址一样。

 Django框架反向解析操作详解

5)在应用的urls.py中,将fan2修改为fan_show。

url(r'^fan_show/$', views.fan2,name='fan2'),

6)回到浏览器中,刷新,查看源文件,两个链接地址不一样。

Django框架反向解析操作详解

4. 视图中的重定向:

from django.shortcuts import redirect
from django.core.urlresolvers import reverse
return redirect(reverse('booktest:fan2'))

5. 反向解析中URL的参数

位置参数

1)在booktest/urls.py中,修改fan2如下:

url(r'^fan(\d+)_(\d+)/$', views.fan2,name='fan2'),

2)修改templates/booktest/fan1.html文件如下:

<html>
<head>
  <title>反向解析</title>
</head>
<body>
普通链接:<a href="/fan2_3/" rel="external nofollow" >fan2</a>
<hr>
反向解析:<a href="{%url 'booktest:fan2' 2 3%}" rel="external nofollow" >fan2</a>
</body>
</html>

3)回到浏览器中,刷新,查看源文件如下图:

Django框架反向解析操作详解

使用重定向传递位置参数格式如下:

return redirect(reverse('booktest:fan', args=(2,3)))

关键字参数

1)在booktest/urls.py中,修改fan2如下:

url(r'^fan(?P<id>\d+)_(?P<age>\d+)/$', views.fan2,name='fan2'),

2)修改templates/booktest/fan1.html文件如下:

<html>
<head>
  <title>反向解析</title>
</head>
<body>
普通链接:<a href="/fan100_18/" rel="external nofollow" >fan2</a>
<hr>
反向解析:<a href="{%url 'booktest:fan2' id=100 age=18%}" rel="external nofollow" >fan2</a>
</body>
</html>

3)回到浏览器中,刷新,查看源文件如下图:

Django框架反向解析操作详解

使用重定向传递关键字参数格式如下:

return redirect(reverse('booktest:fan2', kwargs={'id':110,'age':26}))

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
Python命名空间详解
Aug 18 Python
python实现对一个完整url进行分割的方法
Apr 29 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
python hook监听事件详解
Oct 25 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
如何更优雅地写python代码
Jul 02 Python
python爬虫之遍历单个域名
Nov 20 Python
Python post请求实现代码实例
Feb 28 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 Python
Django框架中间件定义与使用方法案例分析
Nov 28 #Python
Python Numpy 自然数填充数组的实现
Nov 28 #Python
Python创建数字列表的示例
Nov 28 #Python
flask框架json数据的拿取和返回操作示例
Nov 28 #Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 #Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 #Python
python 变量初始化空列表的例子
Nov 28 #Python
You might like
3.从实例开始
2006/10/09 PHP
php设计模式 Factory(工厂模式)
2011/06/26 PHP
PHP session会话的安全性分析
2011/09/08 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
js 文件引入实现代码
2010/04/23 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
python实现的udp协议Server和Client代码实例
2014/06/04 Python
python文件写入write()的操作
2019/05/14 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
python文件操作seek()偏移量,读取指正到指定位置操作
2020/07/05 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
策划总监岗位职责
2014/02/16 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
大学军训决心书
2015/02/05 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL