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的Django框架中用流响应生成CSV文件的教程
May 02 Python
在Django的通用视图中处理Context的方法
Jul 21 Python
Python的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
python虚拟环境virtualenv的安装与使用
Sep 21 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
python实现递归查找某个路径下所有文件中的中文字符
Aug 31 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
May 09 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 Python
Python字典取键、值对的方法步骤
Sep 30 Python
python使用yaml 管理selenium元素的示例
Dec 01 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
七款最流行的PHP本地服务器分享
2013/02/19 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
python基础教程之lambda表达式使用方法
2014/02/12 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
python使用建议技巧分享(三)
2020/08/18 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
平面设计自荐信
2013/10/07 职场文书
环境工程大学生个人的自我评价
2013/10/08 职场文书
中专毕业生求职简历的自我评价
2013/10/21 职场文书
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
费用会计岗位职责
2014/01/01 职场文书
员工拓展培训方案
2014/02/15 职场文书
小学生操行评语
2014/04/22 职场文书
超市周年庆活动方案
2014/08/16 职场文书
办理收楼委托书范本
2014/10/09 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
JS数组方法some、every和find的使用详情
2021/10/05 Javascript
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers