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

 更新时间:2018年07月04日 08:49:10   作者:win_turn   我要评论
这篇文章主要介绍了Django框架实现逆向解析url的方法,结合实例形式分析了Django逆向解析URL的原理、步骤、相关实现技巧与注意事项,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • 解决python2.7 查询mysql时出现中文乱码

    解决python2.7 查询mysql时出现中文乱码

    这篇文章主要介绍了python操作mysql中文显示乱码的解决方法,是Python金沙国际官网程序设计中经常会遇到的问题,非常具有实用价值,需要的朋友可以参考下
    2016-10-10
  • python技能之数据导出excel的实例代码

    python技能之数据导出excel的实例代码

    本篇文章主要介绍了python技能之导出excel的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Python中atexit模块的基本使用示例

    Python中atexit模块的基本使用示例

    这篇文章主要介绍了Python中atexit模块的基本使用示例,示例代码基于Python2.x版本,注意其和Python3的兼容性,需要的朋友可以参考下
    2015-07-07
  • python指定写入文件时的编码格式方法

    python指定写入文件时的编码格式方法

    今天小编就为大家分享一篇python指定写入文件时的编码格式方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • python实现视频分帧效果

    python实现视频分帧效果

    这篇文章主要为大家详细介绍了python实现视频分帧效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • python将处理好的图像保存到指定目录下的方法

    python将处理好的图像保存到指定目录下的方法

    今天小编就为大家分享一篇python将处理好的图像保存到指定目录下的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子

    使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子

    这篇文章主要介绍了使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子,使用的python wmi模块,需要的朋友可以参考下
    2014-04-04
  • Python语言的12个基础知识点小结

    Python语言的12个基础知识点小结

    这篇文章主要介绍了Python语言的12个基础知识点小结,包含正则表达式替换、遍历目录方法、列表按列排序、去重、字典排序等,需要的朋友可以参考下
    2014-07-07
  • 在OpenCV里使用Camshift算法的实现

    在OpenCV里使用Camshift算法的实现

    这篇文章主要介绍了在OpenCV里使用Camshift算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Python图像处理PIL各模块详细介绍(推荐)

    Python图像处理PIL各模块详细介绍(推荐)

    这篇文章主要介绍了Python图像处理PIL各模块详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07

最新评论