Django 子應(yīng)用路由注冊

一個基本接口定義

子應(yīng)用views.py中定義完函數(shù)后,需要在子應(yīng)用和項目目錄中的urls.py分別定義該應(yīng)用方法函數(shù)的路由

先在子應(yīng)用中創(chuàng)建urls.py改抡,然后固定寫法定義方法函數(shù)和接口url的映射關(guān)系

//子應(yīng)用目錄中urls.py
urlpatterns = [
       path('test/', hello),
]

//項目目錄中urls.py
urlpatterns = [
        path('std01/', include('std01.urls')),
]

子應(yīng)用urls.py定義最基本功能模塊的url,項目中urls.py定義路由分發(fā)到哪個子應(yīng)用
完整接口url就是127.0.0.1:8000/std01/test/

接口帶path參數(shù)

一種url可以把url路徑中某個字段當成參數(shù)
子應(yīng)用urls.py中定義可以如下:

//子應(yīng)用目錄中urls.py
urlpatterns = [
       path('test/<name>', getpath),
       path('test/<int:name>', getpath), //指定數(shù)據(jù)類型傳參
]

//子應(yīng)用目錄中views.py
def getpath(request,name):
    return HttpResponse(f"Hello, {name}")

路由反轉(zhuǎn)和命名空間

子應(yīng)用中路由定義释移,可以定義name屬性來解決相同URL沖突痕囱,也能通過name來反轉(zhuǎn)url減少路由修改帶來的影響

reverse反轉(zhuǎn)

e.g:
這里假設(shè)一個場景聂喇,某子應(yīng)用1定義了一條路由,定義name為a儒洛;子應(yīng)用2訪問該路由

//子應(yīng)用目錄中urls.py
urlpatterns = [
       path('test/<name>', getpath,name='a'),
]

如果在某個子應(yīng)用2中訪問了該路由url

url = 'test/xxx'
request.get(url)

那么當子應(yīng)用1路由修改為

//子應(yīng)用目錄中urls.py
urlpatterns = [
       path('testa/<name>', getpath,name='a'),
]

那么子應(yīng)用2訪問該url的地方也得修改精耐,效率就很低,這時候使用name來反轉(zhuǎn)獲得url琅锻,效率就能提高

from django.urls import reverse
url = reverse('a') //a為目標路由的name屬性
request.get(url)

那么無論子應(yīng)用1中路由怎么修改卦停,子應(yīng)用2中reverse都能得到正確的url

namespace 命名空間

namespace則是在一個新維度里解決url沖突的場景,namespace由主路由管理urls.py分發(fā)定義

e.g:
這里再假設(shè)一個場景
子應(yīng)用1定義路由恼蓬,name=a惊完;子應(yīng)用2也定義了路由,name=a
子應(yīng)用2中使用reverse反轉(zhuǎn)獲得子應(yīng)用1的url時处硬,reverse(name)只會獲得自己的url

//子應(yīng)用1和子應(yīng)用2 目錄中urls.py
urlpatterns = [
       path('test/<name>', getpath,name='a'),
]

//在項目路由中分發(fā)管理小槐,include可以正確分發(fā)到對應(yīng)應(yīng)用中
urlpatterns = [
        path('', include('app1.urls')),
        path('', include('app2.urls')),
]

//問題在子應(yīng)用2使用reverse(name)想要獲得子應(yīng)用1的url時,無法獲取正確url
def getpath(request):
    return HttpResponse(f"Hello, {reverse('app')}")

正確區(qū)分荷辕,需要在子應(yīng)用url.py中定義app_name屬性

//子應(yīng)用1的urls.py中定義app_name
app_name ='app1'

//項目路由中分發(fā)路由時凿跳,使用namespace=app_name定義
path('', include('app1.urls', namespace='app1')),

//子應(yīng)用2在reverse時件豌,加上namespace指定
def getpath(request):
    return HttpResponse(f"Hello, {reverse('app1:app')}") //這樣得到的url就不會是子應(yīng)用2自己的,而是子應(yīng)用1的url
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末控嗜,一起剝皮案震驚了整個濱河市苟径,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌躬审,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟆盐,死亡現(xiàn)場離奇詭異承边,居然都是意外死亡,警方通過查閱死者的電腦和手機石挂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門博助,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人痹愚,你說我怎么就攤上這事富岳。” “怎么了拯腮?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵窖式,是天一觀的道長。 經(jīng)常有香客問我动壤,道長萝喘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任琼懊,我火速辦了婚禮阁簸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哼丈。我一直安慰自己启妹,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布醉旦。 她就那樣靜靜地躺著饶米,像睡著了一般。 火紅的嫁衣襯著肌膚如雪车胡。 梳的紋絲不亂的頭發(fā)上咙崎,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音吨拍,去河邊找鬼褪猛。 笑死,一個胖子當著我的面吹牛羹饰,可吹牛的內(nèi)容都是我干的伊滋。 我是一名探鬼主播碳却,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笑旺!你這毒婦竟也來了昼浦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤筒主,失蹤者是張志新(化名)和其女友劉穎关噪,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乌妙,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡使兔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了藤韵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虐沥。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖泽艘,靈堂內(nèi)的尸體忽然破棺而出欲险,到底是詐尸還是另有隱情,我是刑警寧澤匹涮,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布天试,位于F島的核電站,受9級特大地震影響然低,放射性物質(zhì)發(fā)生泄漏秋秤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一脚翘、第九天 我趴在偏房一處隱蔽的房頂上張望灼卢。 院中可真熱鬧,春花似錦来农、人聲如沸鞋真。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涩咖。三九已至,卻和暖如春繁莹,著一層夾襖步出監(jiān)牢的瞬間檩互,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工咨演, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闸昨,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像饵较,于是被迫代替她去往敵國和親拍嵌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容