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库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
批量获取及验证HTTP代理的Python脚本
Apr 23 Python
python删除服务器文件代码示例
Feb 09 Python
python实现名片管理系统
Nov 29 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
May 26 Python
python支持多继承吗
Jun 19 Python
Python select及selectors模块概念用法详解
Jun 22 Python
如何基于pandas读取csv后合并两个股票
Sep 25 Python
用python进行视频剪辑
Nov 02 Python
python爬取代理ip的示例
Dec 18 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 无极分类(递归)实现代码
2010/01/05 PHP
php标签云的实现代码
2012/10/10 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
Python中的ceil()方法使用教程
2015/05/14 Python
Python文件及目录操作实例详解
2015/06/04 Python
python如何使用unittest测试接口
2018/04/04 Python
python安装本地whl的实例步骤
2019/10/12 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
英国工具中心:UK Tool Centre
2017/07/10 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
一个C/C++编程面试题
2013/11/10 面试题
优秀信贷员先进事迹
2014/01/31 职场文书
元旦促销方案
2014/03/15 职场文书
科技之星事迹材料
2014/06/02 职场文书
南湾猴岛导游词
2015/02/09 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书