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使用PyFetion来发送短信的例子
Apr 22 Python
零基础写python爬虫之抓取糗事百科代码分享
Nov 06 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
python GUI实例学习
Nov 21 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
python 函数中的内置函数及用法详解
Jul 02 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
关于python的缩进规则的知识点详解
Jun 22 Python
python制作抽奖程序代码详解
Jan 15 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对文件进行hash运算的方法
2015/04/03 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
jQuery实现页面下拉100像素出现悬浮窗口的方法
2016/09/05 Javascript
网页瀑布流布局jQuery实现代码
2016/10/21 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
Python中Threading用法详解
2017/12/27 Python
django在接受post请求时显示403forbidden实例解析
2018/01/25 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
python requests.get带header
2020/05/05 Python
英国自行车商店:AW Cycles
2021/02/24 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
晚归检讨书
2014/02/19 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
市场营销毕业求职信
2014/08/07 职场文书
4s店活动策划方案
2014/08/25 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
使用nginx配置访问wgcloud的方法
2021/06/26 Servers
Win11查看设备管理器
2022/04/19 数码科技