URL 反向解析

URL正向解析:
有客戶端的瀏覽器發(fā)起一個(gè)url請(qǐng)求,Django根據(jù)URL解析,把url中的參數(shù)捕獲,調(diào)用相應(yīng)的試圖,獲取相應(yīng)的數(shù)據(jù),然后返回給客戶端顯示。
根據(jù)用戶/瀏覽器發(fā)起的URL請(qǐng)求,它調(diào)用正確的Django視圖,并從URL中提取它的參數(shù)需要的值。

URL反向解析:
通過(guò)一個(gè)視圖的名字,再加上一些參數(shù)和值,逆向獲取相應(yīng)的URL。
根據(jù)Django視圖中的標(biāo)識(shí)和將要傳遞給它的參數(shù)的值,獲取與之關(guān)聯(lián)的URL。

Django提供了不同的層級(jí)的url逆向處理工具:

1、在模板templates中,使用url標(biāo)記,如:{% url %}
2、在Python代碼中,使用django.urls.reverse()方法
3、在更高一層級(jí)的處理url中,用get_absolute_url()方法

urls.py中:

from django.urls import path
from . import views

urlpatterns = [
      path('articles/<int:year>/',views.year_archive,name='year_archive'),
]

html模板中:

<a href="{% url 'year_archive' 2012 %}">2012 Archive</a>
<ul>
{% for yearvar in year_list %}
<li><a href="{% url 'year_archive' yearvar %}">{{ yearvar }} Archive</a></li>
{% endfor %}
</ul>

Python代碼中:

from django.urls import reverse
from django.http import HttpResponseRedirect

def redirect_to_year(request):
    # ...
    year = 2006
    # ...
    return HttpResponseRedirect(reverse('year_archive', args=(year,)))

get_absolute_url()方法:

class Article(models.Model):
 
    def get_absolute_url(self):
        return reverse('blog:detail', kwargs={'pk': self.pk})

當(dāng)點(diǎn)擊一篇文章的繼續(xù)閱讀,跳轉(zhuǎn)文章詳情頁(yè)面

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容