陸續(xù)更新中:
Django基礎(chǔ)(1): 目錄文件簡介
Django基礎(chǔ)(2): 創(chuàng)建應(yīng)用
Django基礎(chǔ)(3): 配置url
Django基礎(chǔ)(4): 建立Templates
使用函數(shù)配置url
在這里簡單介紹一下上圖中的第一種方法养渴,即使用函數(shù)來配置url:
- 首先需要import我所創(chuàng)建的APP的Views文件,即
Import my_app.views
- 在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/
注意事項
- 在舊版本的django中醋界,還需要對path使用正則表達式進行約束竟宋,否則會出現(xiàn)在鏈接后隨意加后綴名也返回當前頁面的情況,需要寫成
path(r'^$', views.index)
使用^$確保在后面沒有后綴名的情況下才顯示當前頁面 - 配置URL時注意以‘/’結(jié)尾形纺,養(yǎng)成習(xí)慣