首页 > Web开发 > 详细

Django学习笔记之Django的url反向解析

时间:2018-07-24 15:37:34      阅读:158      评论:0      收藏:0      [点我收藏+]

 

0x00 URL反向解析和三种不同的反向解析方式

Django中提供了关于URL的映射的解决方案,可以做两个方向的使用:

1.普通解析过程:由客户端的浏览器发起一个url请求,Django根据URL解析,把url中的参数捕获,调用相应的视图,获取相应的数据,然后返回给客户端显示。
2.反向解析:通过一个视图的名字,再加上一些参数和值,逆向获取相应的URL。

 

Django提供了三种不同反向解析处理方式:

1.在模板templates中,使用url标记,如:{% url %}

2.在view中,使用django.core.urlresolvers.reverse()方法

3.在更高一层级的处理url中,用get_absolute_url()方法

 

如下的URLconf:

from django.conf.urls import patterns, url
urlpatterns = patterns(‘‘,
    #...
    url(r^articles/(\d{4})/$, news.views.year_archive),
    #...
)

 

0x01 模板中的反向解析

<a href="{% url ‘news.views.year_archive‘ 2012 %}">2012 Archive</a>


# 解释一下:首先,根据视图 ‘news.views.year_artichive‘可以定位到指定的URLconf中,然后后面的2012来填充articles/\d{4}
# 最终的结果为<a href="articles/2012/">2012 Archive</a>

 

0x02 视图中的重定向

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学习笔记之Django的url反向解析

原文:https://www.cnblogs.com/JetpropelledSnake/p/9360033.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!