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 解析html之BeautifulSoup
Jul 07 Python
Python中字符串的格式化方法小结
May 03 Python
Python实现网站注册验证码生成类
Jun 08 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
NumPy.npy与pandas DataFrame的实例讲解
Jul 09 Python
python 执行文件时额外参数获取的实例
Dec 18 Python
深入解析神经网络从原理到实现
Jul 26 Python
Django框架创建项目的方法入门教程
Nov 04 Python
Python 3.9的到来到底是意味着什么
Oct 14 Python
python xlsxwriter模块的使用
Dec 24 Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 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 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
JS组件Bootstrap Select2使用方法详解
2020/04/17 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
2017/05/26 Javascript
基于js中style.width与offsetWidth的区别(详解)
2017/11/12 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
Python生成器(Generator)详解
2015/04/13 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
django model通过字典更新数据实例
2020/04/01 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
KENZO官网:高田贤三在法国创立的品牌
2019/05/16 全球购物
设计部经理的岗位职责
2013/11/16 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书
扩展多台相同的Web服务器
2021/04/01 Servers
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫