Django框架实现逆向解析url的方法


Posted in Python onJuly 04, 2018

本文实例讲述了Django框架实现逆向解析url的方法。分享给大家供大家参考,具体如下:

Django中提供了一个关于URL的映射的解决方案,你可以做两个方向的使用:

①. 有客户端的浏览器发起一个url请求,Django根据URL解析,把url中的参数捕获,调用相应的试图,获取相应的数据,然后返回给客户端显示

②. 通过一个视图的名字,再加上一些参数和值,逆向获取相应的URL

第一个就是平常的请求有URLconf来解析的过程,

第二个叫做,url的逆向解析,url逆向匹配,url的逆向查阅,等

Django提供了不同的层级的url逆向处理工具:

①. 在模板templates中,使用url标记,如:{% url %}

②. 在Python代码中,使用django.core.urlresolvers.reverse()方法

③. 在更高一层级的处理url中,用get_absolute_url()方法

示例

看如下的URLconf:

from django.conf.urls import patterns, url
urlpatterns = patterns('',
  #...
  url(r'^articles/(\d{4})/$', 'news.views.year_archive'),
  #...
)

根据设计,这个url的目的是将是nnnn年的文章存档(archive),即/articles/nnnn/

1.在模板中,可以这样来使用:

<a href="{% url 'news.views.year_archive' 2012 %}" rel="external nofollow" >2012 Archive</a>
{# Or with the year in a template context variable: #}
<ul>
{% for yearvar in year_list %}
<li><a href="{% url 'news.views.year_archive' yearvar %}" rel="external nofollow" >{{ yearvar }} Archive</a></li>
{% endfor %}
</ul>

解释一下:首先,根据视图 'news.views.year_artichive'可以定位到指定的URLconf中,然后后面的2012来填充articles/\d{4}

最终的结果为:

<a href="articles/2012/" rel="external nofollow" >2012 Archive</a>

这里就是根据试图和所提供的值来逆向查询url

下面的类似,

2.在python代码中

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
def redirect_to_year(request):
  # ...
  year = 2006
  # ...
  return HttpResponseRedirect(reverse('news.views.year_archive', args=(year,)))

解释一下:首先,必须引入django.core.urlresolvers.reverse() 方法,然后原理就是,根据提供的试图和参数

的值来逆向查找URLconf,匹配相应的url然后把值拿回来,最后,reverse()返回的值为:articles/2006/,这样就逆向的查出了需要的url

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
利用Python的Django框架生成PDF文件的教程
Jul 22 Python
Python中二维列表如何获取子区域元素的组成
Jan 19 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
python正则实现计算器功能
Dec 14 Python
在matplotlib的图中设置中文标签的方法
Dec 13 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
python中tkinter的应用:修改字体的实例讲解
Jul 17 Python
Python Django 前后端分离 API的方法
Aug 28 Python
python tkinter组件摆放方式详解
Sep 16 Python
详解Java中一维、二维数组在内存中的结构
Feb 11 Python
Windows安装Anaconda3的方法及使用过程详解
Jun 11 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 #Python
详解Django中六个常用的自定义装饰器
Jul 04 #Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 #Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 #Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 #Python
python 中字典嵌套列表的方法
Jul 03 #Python
Django项目开发中cookies和session的常用操作分析
Jul 03 #Python
You might like
收集的二十一个实用便利的PHP函数代码
2010/04/22 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
Vue+Element实现网页版个人简历系统(推荐)
2019/12/31 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
[01:27:43]VGJ.S vs TNC Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
python抽象基类用法实例分析
2015/06/04 Python
django如何实现视图重定向
2019/07/24 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
医药代表个人求职信范本
2013/12/19 职场文书
党校学习思想汇报
2014/01/06 职场文书
小学生美德少年事迹
2014/02/02 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
英文商务邀请函范文
2015/01/31 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书