欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django框架實現(xiàn)逆向解析url的方法

 更新時間:2018年07月04日 08:49:09   作者:win_turn  
這篇文章主要介紹了Django框架實現(xiàn)逆向解析url的方法,結(jié)合實例形式分析了Django逆向解析URL的原理、步驟、相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下

本文實例講述了Django框架實現(xiàn)逆向解析url的方法。分享給大家供大家參考,具體如下:

Django中提供了一個關(guān)于URL的映射的解決方案,你可以做兩個方向的使用:

①. 有客戶端的瀏覽器發(fā)起一個url請求,Django根據(jù)URL解析,把url中的參數(shù)捕獲,調(diào)用相應(yīng)的試圖,獲取相應(yīng)的數(shù)據(jù),然后返回給客戶端顯示

②. 通過一個視圖的名字,再加上一些參數(shù)和值,逆向獲取相應(yīng)的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'),
  #...
)

根據(jù)設(shè)計,這個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>

解釋一下:首先,根據(jù)視圖 'news.views.year_artichive'可以定位到指定的URLconf中,然后后面的2012來填充articles/\d{4}

最終的結(jié)果為:

<a href="articles/2012/" rel="external nofollow" >2012 Archive</a>

這里就是根據(jù)試圖和所提供的值來逆向查詢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() 方法,然后原理就是,根據(jù)提供的試圖和參數(shù)

的值來逆向查找URLconf,匹配相應(yīng)的url然后把值拿回來,最后,reverse()返回的值為:articles/2006/,這樣就逆向的查出了需要的url

希望本文所述對大家基于Django框架的Python程序設(shè)計有所幫助。

相關(guān)文章

最新評論