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批量修改文件后缀的方法
Jan 26 Python
简述Python中的进程、线程、协程
Mar 18 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
PyCharm鼠标右键不显示Run unittest的解决方法
Nov 30 Python
在python 不同时区之间的差值与转换方法
Jan 14 Python
python dict 相同key 合并value的实例
Jan 21 Python
WxPython建立批量录入框窗口
Feb 27 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
python turtle 绘制太极图的实例
Dec 18 Python
python中time、datetime模块的使用
Dec 14 Python
Python爬虫基础初探selenium
May 31 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/08/27 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
php上传图片类及用法示例
2016/05/11 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
JS小功能(操作Table--动态添加删除表格及数据)实现代码
2013/11/28 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
JavaScrpt判断一个数是否是质数的实例代码
2017/06/11 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
Python提取网页中超链接的方法
2016/09/18 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
C++是不是类型安全的
2014/02/18 面试题
兰兰过桥教学反思
2014/02/08 职场文书
企业员工培训感言
2014/02/26 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
保密工作目标责任书
2014/07/28 职场文书
公司员工离职证明书
2014/10/04 职场文书
街道党风廉政建设调研报告
2015/01/01 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
2022年显卡天梯图(6月更新)
2022/06/17 数码科技