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调用java的Webservice示例
Mar 10 Python
Python中文件遍历的两种方法
Jun 16 Python
Python实现向QQ群成员自动发邮件的方法
Nov 19 Python
Python中用PIL库批量给图片加上序号的教程
May 06 Python
Python调用C++程序的方法详解
Jan 24 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
python更改已存在excel文件的方法
May 03 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
Python谱减法语音降噪实例
Dec 18 Python
在keras中实现查看其训练loss值
Jun 16 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对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
event.srcElement 用法笔记e.target
2009/12/18 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
利用jquery实现瀑布流3种案例
2016/09/18 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
js实现点赞效果
2020/03/16 Javascript
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python删除空文件和空文件夹的方法
2015/07/14 Python
人机交互程序 python实现人机对话
2017/11/14 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
棉花姑娘教学反思
2014/02/15 职场文书
会计演讲稿范文
2014/05/23 职场文书
求职意向书
2014/07/29 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
任命书标准格式
2015/03/02 职场文书
应聘教师自荐信
2015/03/26 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
灵能百分百第三季什么时候来?
2022/03/15 日漫