Django基礎(chǔ)(3): 配置url

陸續(xù)更新中:
Django基礎(chǔ)(1): 目錄文件簡介
Django基礎(chǔ)(2): 創(chuàng)建應(yīng)用
Django基礎(chǔ)(3): 配置url
Django基礎(chǔ)(4): 建立Templates

django項目中所有的地址頁面都需要在urls.py中配置url贯底。Django默認提供了3種url的配置方法婴梧,如圖1:
圖1

使用函數(shù)配置url

在這里簡單介紹一下上圖中的第一種方法养渴,即使用函數(shù)來配置url:

  1. 首先需要import我所創(chuàng)建的APP的Views文件,即
    Import my_app.views
  2. 在url中配置path,其中,''是你在APP.views中定義的用于響應(yīng)的函數(shù),有3個參數(shù)挂洛,第1個是url本身,即地址。注意在寫這個Url的時候悉稠,最好默認在url后面加上/,這樣會減少出現(xiàn)錯誤的可能性艘包。第2個參數(shù)是該url地址對應(yīng)的響應(yīng)方法的猛,即在my_app.views中創(chuàng)建的響應(yīng)函數(shù),比如我在app.views中創(chuàng)建了一個名為index的響應(yīng)請求的函數(shù):
def index(request):
    return HttpResponse('Hello, World')

那么對應(yīng)的url配置可以這樣寫:

import my_app.views as mv
urlpatterns = [
      path('index/', mv.index),
]

第3個參數(shù)是url的名稱,可不配置
以上代碼完成后想虎,在terminal中輸入python manage.py server卦尊,看到運行結(jié)果后,在地址欄中輸入http://127.0.0.1:8000/index/舌厨,就可以看到Hello, world已經(jīng)被打印出來了

更常用的方法:包含其他的url配置文件

在項目文件變得非常龐大時岂却,app會非常多,使用上訴的第一種方法會使得文件變得龐大邓线,而且也增加了各url命名沖突的風險淌友,為了避免這種情況,往往推薦使用另一種方法配置Url,也就是圖1中的第3種方法骇陈,使用其他的url來配置
1. 在跟urls.py中引入Include()
from django.urls import path, include
2. 將前面方法中提到的mv.index改寫為include('myapp.urls')
對應(yīng)的url配置文件寫成:

from django.contrib import admin
from django.urls import path, include

import my_app.views as mv
urlpatterns = [
      path('index/', include('myapp.urls')),
]

3.在APP目錄下創(chuàng)建urls.py文件震庭,格式與根urls.py相同
注意到現(xiàn)在myapp文件夾下面是沒有urls這個模塊的,所以我們需要在myapp文件夾下新建一個urls.py你雌,然后把我們在上一種方法中配置的url寫進去,下面代碼中的Index指向的是前面編寫的Index的響應(yīng)函數(shù)

from django.urls import path, include

from . import views

urlpatterns = [
    path('index/', views.index),
]

然后嘗試在terminal中運行python manage.py server爷怀, 就可以看到運行成功的結(jié)果了,注意在這里极谊,跟urls.py針對APP配置的URL名稱偷厦,是該APP所有URL的總路徑酸些,所以需要在地址欄中輸入兩個Index,即http://127.0.0.1:8000/index/index/,這樣才可以得到和第一種方法一致的結(jié)果。如果不想要兩個Index后綴婿着,可以修改myapp下面的url,把path中的index/去掉:

from django.urls import path, include

from . import views

urlpatterns = [
    path('', views.index),
]

此時,在地址欄中就只需要輸入一個index了:http://127.0.0.1:8000/index/

注意事項

  1. 在舊版本的django中醋界,還需要對path使用正則表達式進行約束竟宋,否則會出現(xiàn)在鏈接后隨意加后綴名也返回當前頁面的情況,需要寫成
    path(r'^$', views.index)
    使用^$確保在后面沒有后綴名的情況下才顯示當前頁面
  2. 配置URL時注意以‘/’結(jié)尾形纺,養(yǎng)成習(xí)慣
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丘侠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逐样,更是在濱河造成了極大的恐慌蜗字,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脂新,死亡現(xiàn)場離奇詭異挪捕,居然都是意外死亡,警方通過查閱死者的電腦和手機戏羽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門担神,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人始花,你說我怎么就攤上這事『⑽” “怎么了酷宵?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長躬窜。 經(jīng)常有香客問我浇垦,道長,這世上最難降的妖魔是什么荣挨? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任男韧,我火速辦了婚禮,結(jié)果婚禮上默垄,老公的妹妹穿的比我還像新娘此虑。我一直安慰自己,他們只是感情好口锭,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布朦前。 她就那樣靜靜地躺著介杆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪韭寸。 梳的紋絲不亂的頭發(fā)上春哨,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天,我揣著相機與錄音恩伺,去河邊找鬼赴背。 笑死,一個胖子當著我的面吹牛晶渠,可吹牛的內(nèi)容都是我干的癞尚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼乱陡,長吁一口氣:“原來是場噩夢啊……” “哼浇揩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起憨颠,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤胳徽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后爽彤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體养盗,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年适篙,在試婚紗的時候發(fā)現(xiàn)自己被綠了往核。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嚷节,死狀恐怖聂儒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情硫痰,我是刑警寧澤衩婚,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站效斑,受9級特大地震影響非春,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缓屠,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一奇昙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧敌完,春花似錦储耐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凳忙。三九已至,卻和暖如春禽炬,著一層夾襖步出監(jiān)牢的瞬間涧卵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工腹尖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柳恐,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓热幔,卻偏偏與公主長得像乐设,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绎巨,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

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