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 切片和range()用法说明
Mar 24 Python
Python动态加载模块的3种方法
Nov 22 Python
深入理解Python装饰器
Jul 27 Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 Python
Python 字符串与数字输出方法
Jul 16 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
8种用Python实现线性回归的方法对比详解
Jul 10 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 Python
Python对Tornado请求与响应的数据处理
Feb 12 Python
python如何把字符串类型list转换成list
Feb 18 Python
用python写PDF转换器的实现
Oct 29 Python
Django分页器的用法你都了解吗
May 26 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 skymvc 一款轻量、简单的php
2011/06/28 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
angular2使用简单介绍
2016/03/01 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
用Python实现KNN分类算法
2017/12/22 Python
python随机取list中的元素方法
2018/04/08 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
英国标准协会商店:BSI Shop
2019/02/25 全球购物
上班迟到检讨书
2014/01/10 职场文书
创业资金计划书
2014/02/06 职场文书
调解员先进事迹材料
2014/02/07 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
公积金接收函格式
2015/01/30 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
MySQL索引失效的典型案例
2021/06/05 MySQL
压缩Redis里的字符串大对象操作
2021/06/23 Redis
JS实现数组去重的11种方法总结
2022/04/04 Javascript