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 相关文章推荐
linux 下实现python多版本安装实践
Nov 18 Python
Python实现把xml或xsl转换为html格式
Apr 08 Python
python删除列表中重复记录的方法
Apr 28 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
python查看模块,对象的函数方法
Oct 16 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
python 日期排序的实例代码
Jul 11 Python
Django Rest framework频率原理与限制
Jul 26 Python
Python中__repr__和__str__区别详解
Nov 07 Python
使用python绘制二维图形示例
Nov 22 Python
ASP.NET Core中的配置详解
Feb 05 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
php生成缩略图的类代码
2008/10/02 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
php jsonp单引号转义
2014/11/23 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
Vue学习之常用指令实例详解
2020/01/06 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
Python求解平方根的方法
2015/03/11 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
python爬取youtube视频的示例代码
2021/03/03 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
《少年王勃》教学反思
2014/04/27 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
任长霞观后感
2015/06/16 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python