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脚本
Feb 10 Python
简单的抓取淘宝图片的Python爬虫
Dec 25 Python
理解Python中的With语句
Feb 02 Python
Python2.x中文乱码问题解决方法
Jun 02 Python
Python脚本暴力破解栅栏密码
Oct 19 Python
Python标准库之itertools库的使用方法
Sep 07 Python
python验证码识别的示例代码
Sep 21 Python
Python实现列表删除重复元素的三种常用方法分析
Nov 24 Python
Python中的集合介绍
Jan 28 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Python获取统计自己的qq群成员信息的方法
Nov 15 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 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修改数组键名的方法示例
2017/04/15 PHP
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python实现的最近最少使用算法
2015/07/10 Python
Python ldap实现登录实例代码
2016/09/30 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
基于树莓派的语音对话机器人
2019/06/17 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
波兰珠宝品牌:YES
2019/08/09 全球购物
写给老师的表扬信
2014/01/21 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
秋季运动会开幕词
2015/01/28 职场文书
刑事案件上诉状
2015/05/23 职场文书
运动会800米赞词
2015/07/22 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers