本文实例讲述了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程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。