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和OpenCV库将URL转换为OpenCV格式的方法
Mar 27 Python
使用Python编写vim插件的简单示例
Apr 17 Python
Python复制文件操作实例详解
Nov 10 Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
Python实现的爬虫刷回复功能示例
Jun 07 Python
Python抽象和自定义类定义与用法示例
Aug 23 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
django基于restframework的CBV封装详解
Aug 08 Python
python中设置超时跳过,超时退出的方式
Dec 13 Python
Python如何使用字符打印照片
Jan 03 Python
Python如何截图保存的三种方法(小结)
Sep 01 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 FLEA中二叉树数组的遍历输出
2012/09/26 PHP
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
python 排序算法总结及实例详解
2016/09/28 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
Python模块的加载讲解
2019/01/15 Python
浅析Python 多行匹配模式
2020/07/24 Python
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
DBA的职责都有哪些
2012/05/16 面试题
《长征》教学反思
2014/04/27 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
质量保证书格式
2015/02/27 职场文书
事业单位聘任报告
2015/03/02 职场文书
技术员个人工作总结
2015/03/03 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers