您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關使用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框架怎么逆向解析url有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。