日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【django】路由命名和路由反向解析

發(fā)布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【django】路由命名和路由反向解析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在 Django 項?中,?個常?需求是獲取最終形式的 URL,?如?于嵌??成的內容中(視圖和資源?址,給?戶展示?址等)或?戶服務器端的導航處理(重定向等)。

強烈建議不要硬編碼 URL(這是?個費?、不能擴展、容易出錯的主意)。同樣危險的是設計臨時機制來?成的 URL 與URLconf描述的設計的URL?樣,這會導致URL 隨著時間的推移變得過時。

換句話說,需要的是 DRY 機制。除其他優(yōu)勢外,它還允許 URL 設計?動更新,?不必遍歷所有項?代碼來搜索和替換過時的 URL 。

Django 提供執(zhí)?反轉 URL 的?具,這些?具與需要 URL 的不同層匹配:

在模板?:使? url 模板標簽。
在 Python 編碼:使? reverse() 函數(shù)。

一、路由命名

在定義路由的時候,可以為路由命名,?便查找特定視圖的具體路徑信息。
1、 在定義普通路由時,可以使?name參數(shù)指明路由的名字,如

根路由:

urlpatterns = [path('admin/', admin.site.urls),path('film/',include('film.urls')), ]

子路由

# 查詢所有影?信息 urlpatterns = [ path('filmlist/',views.filmList,name='film-list') ]

視圖:

def loginview(request):url=reverse('film-list')print(url)return HttpResponseRedirect(url)def otherview(request):return HttpResponse('vip——film')

訪問url:
http://127.0.0.1:8000/film/login/
重定向后的url:
http://127.0.0.1:8000/film/filmlist/

執(zhí)行過程:
a、輸入url(http://127.0.0.1:8000/film/login/),進行主路由、子路由尋址,
b、尋址成功調用loginview視圖函數(shù)
c、執(zhí)行url=reverse(‘film-list’),找到路由中的’film-list’,根據(jù)film-list,返回url(url:/film/filmlist/)
注意:函數(shù)中的參數(shù):film-list,和路由中的參數(shù)保持一致
d、重定向HttpResponseRedirect(url),調用視圖函數(shù)otherview,返回響應結果

2、傳遞參數(shù)的情況(uname)
需要在reverse函數(shù)中傳遞args=['參數(shù)']
子路由:

urlpatterns = [path('login/',views.loginview),path('filmlist/<uname>',views.otherview,name='film-list') ]

視圖:

def loginview(request):url=reverse('film-list',args=['kb'])print(url)return HttpResponseRedirect(url)def otherview(request,uname):return HttpResponse('vip——film--%s'%uname)

總結

以上是生活随笔為你收集整理的【django】路由命名和路由反向解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。