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 获取et和excel的版本号
Apr 09 Python
python冒泡排序算法的实现代码
Nov 21 Python
Python随机生成带特殊字符的密码
Mar 02 Python
Python实现全角半角字符互转的方法
Nov 28 Python
Python装饰器知识点补充
May 28 Python
Python日期时间对象转换为字符串的实例
Jun 22 Python
python 重命名轴索引的方法
Nov 10 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
使用Pycharm分段执行代码
Apr 15 Python
详解torch.Tensor的4种乘法
Sep 03 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
session 的生命周期是多长
2006/10/09 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
PHP链表操作简单示例
2016/10/15 PHP
万能的php分页类
2017/07/06 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
javascript new 需不需要继续使用
2009/07/02 Javascript
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
js获取url传值的方法
2015/12/18 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
layer.alert自定义关闭回调事件的方法
2019/09/27 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
学习python (2)
2006/10/31 Python
python读写二进制文件的方法
2015/05/09 Python
Python中的变量和作用域详解
2016/07/13 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
基于python log取对数详解
2018/06/08 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
Python实现不规则图形填充的思路
2020/02/02 Python
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
法制教育演讲稿
2014/09/10 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
python实现图片九宫格分割的示例
2021/04/25 Python
Python Parser的用法
2021/05/12 Python
Python的这些库,你知道多少?
2021/06/09 Python