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文件写入实例分析
Apr 08 Python
python操作sqlite的CRUD实例分析
May 08 Python
Python基于回溯法子集树模板实现8皇后问题
Sep 01 Python
python学生信息管理系统(初级版)
Oct 17 Python
pandas中apply和transform方法的性能比较及区别介绍
Oct 30 Python
python使用knn实现特征向量分类
Dec 26 Python
Python 硬币兑换问题
Jul 29 Python
Python实现TCP通信的示例代码
Sep 09 Python
django 装饰器 检测登录状态操作
Jul 02 Python
浅谈Python 命令行参数argparse写入图片路径操作
Jul 12 Python
如何使用pycharm连接Databricks的步骤详解
Sep 23 Python
LeetCode189轮转数组python示例
Aug 05 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 SPL标准库中的常用函数介绍
2015/05/11 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
手写简单的jQuery雪花飘落效果实例
2018/04/22 jQuery
100行代码实现一个vue分页组功能
2018/11/06 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
[33:39]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第二局
2016/02/27 DOTA
使用PYTHON创建XML文档
2012/03/01 Python
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
python获取txt文件词向量过程详解
2019/07/05 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
关于python字符串方法分类详解
2019/08/20 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
jupyter notebook 重装教程
2020/04/16 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
元旦活动感言
2014/03/08 职场文书
运动会演讲稿
2014/05/07 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
警示教育片观后感
2015/06/17 职场文书
跳高加油稿
2015/07/21 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android