Django 的逆向解析url(轉(zhuǎn))

首先新建一個(gè)項(xiàng)目test_url,項(xiàng)目包含一個(gè)名為app01的應(yīng)用

urls.py文件中生成如下內(nèi)容

from django.conf.urls import url
    from django.shortcuts import HttpResponse
    
    def index(request):
    
        return HttpResponse("index")
    
    def test(request):
    
        return HttpResponse("test")
    
    urlpatterns = [
        url(r'^index',index),
        url(r'^test',test),
    ]

啟動(dòng)項(xiàng)目,用瀏覽器打開http://127.0.0.1:8000/testhttp://127.0.0.1:8000/index/
頁面如下

image.png

image.png

上面的例子是正向生成url,既然Django可以正向生成url,當(dāng)然也可以反向生成url

無參數(shù)反向生成url

修改urls.py文件

  from django.conf.urls import url
    from django.shortcuts import HttpResponse,redirect
    
    def index(request):
    
        from django.urls import reverse         # 導(dǎo)入reverse
    
        reverse_url=reverse("test_url")         # 用reverse把別名為test_url的路由反向生成url    
        print("reverse_url:",reverse_url)       # 打印反向生成的url
    
        return redirect(reverse_url)            # 重定向到反向生成的url
    
    def test(request):
    
        return HttpResponse("test")
    
    urlpatterns = [
        url(r'^index',index),
        url(r'^test1/test2/test3/test',test,name="test_url"),   # 為test路由設(shè)置一個(gè)test_url別名
    ]

用瀏覽器打開http://127.0.0.1:8000/index,然后回車

image.png

而服務(wù)端打印的反向生成的utl如下
image.png

可以看到,瀏覽器的地址欄里顯示的url跟我們輸入的地址不一樣,而是跟Django的路由表中設(shè)置了路由別名的url是一樣的.

從上面的例子可以看出,反向生成url已經(jīng)成功了.

有參數(shù)的反向生成url

使用正則表達(dá)式通過args傳入?yún)?shù)反向生成url

修改urls.py文件

 from django.conf.urls import url
    from django.shortcuts import HttpResponse,redirect
    
    def index(request):
    
        from django.urls import reverse
    
        reverse_url=reverse("test_url",args=(2,8))
        print("reverse_url:",reverse_url)
    
        return redirect(reverse_url)
    
    def test(request,*args,**kwargs):
    
        return HttpResponse("test")
    
    urlpatterns = [
        url(r'^index',index),
        url(r'^test1/(\d+)/test2/test3/(\d+)/test',test,name="test_url"),
    ]

瀏覽器打開http://127.0.0.1:8000/index這個(gè)地址
瀏覽器的地址變成了

image.png

而在服務(wù)端后臺(tái)打印反向生成的url為
image.png

使用正則表達(dá)式通過kwargs傳入?yún)?shù)反向生成url

修改urls.py文件

from django.conf.urls import url
    from django.shortcuts import HttpResponse,redirect
    
    def index(request):
    
        from django.urls import reverse
    
        reverse_url=reverse("test_url",kwargs={"a1":23,"a2":37})
        print("reverse_url:",reverse_url)
    
        return redirect(reverse_url)
    
    def test(request,*args,**kwargs):
    
        return HttpResponse("test")
    
    urlpatterns = [
        url(r'^index',index),
        url(r'^test1/(?P<a1>\d+)/test2/test3/(?P<a2>\d+)/test',test,name="test_url"),
    ]

瀏覽器打開http://127.0.0.1:8000/index這個(gè)個(gè)地址

image.png

后臺(tái)打印反向生成的url
image.png

在前端中也可以使用反向url

{% url "test" 2013 12%}
{% url "test" year=2013 month=12%}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咖驮,一起剝皮案震驚了整個(gè)濱河市捌年,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挚歧,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顷蟀,死亡現(xiàn)場(chǎng)離奇詭異丐膝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)淫半,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門溃槐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撮慨,你說我怎么就攤上這事竿痰。” “怎么了砌溺?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵影涉,是天一觀的道長。 經(jīng)常有香客問我规伐,道長蟹倾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任猖闪,我火速辦了婚禮鲜棠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘培慌。我一直安慰自己豁陆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布吵护。 她就那樣靜靜地躺著盒音,像睡著了一般表鳍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祥诽,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天譬圣,我揣著相機(jī)與錄音,去河邊找鬼雄坪。 笑死厘熟,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的维哈。 我是一名探鬼主播绳姨,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼笨农!你這毒婦竟也來了就缆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤谒亦,失蹤者是張志新(化名)和其女友劉穎竭宰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體份招,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡切揭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锁摔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廓旬。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谐腰,靈堂內(nèi)的尸體忽然破棺而出孕豹,到底是詐尸還是另有隱情,我是刑警寧澤十气,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布励背,位于F島的核電站,受9級(jí)特大地震影響砸西,放射性物質(zhì)發(fā)生泄漏叶眉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一芹枷、第九天 我趴在偏房一處隱蔽的房頂上張望衅疙。 院中可真熱鬧,春花似錦鸳慈、人聲如沸饱溢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽理朋。三九已至絮识,卻和暖如春绿聘,著一層夾襖步出監(jiān)牢的瞬間嗽上,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工熄攘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留兽愤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓挪圾,卻偏偏與公主長得像浅萧,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哲思,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348