django URL路由匹配規則(path/re_path/include)
1、path不支持正則匹配
語法:path('URL/',app01視圖文件views.視圖中執行的函數)
項目urls.py文件
from django.urls import path # 導入path函數 from django.urls import re_path #導入re_path函數 from django.urls import include # 導入include函數 from django.contrib import admin from app01 import views urlpatterns = [ path('admin/', admin.site.urls), #path函數 path('index/',views.index), # views視圖,這條URL對應的執行函數 ]
2、re_path支持正則匹配
項目urls.py文件
from django.urls import path from django.urls import re_path from django.urls import include from django.contrib import admin from index import views urlpatterns = [ path('admin/', admin.site.urls), re_path('^index/',views.index), # 匹配以index開頭的URL ]
3、include引用頭文件
項目urls.py文件
from django.urls import path from django.urls import re_path from django.urls import include from django.contrib import admin from index import urls urlpatterns = [ path('admin/', admin.site.urls), re_path('^index/',include('index.urls')), # ]
app01的urls.py文件中
from django.urls import path,re_path from django.urls import include from index import views urlpatterns = [ re_path(r'^index/$',views.index1), ]
注意:
1、在項目中URL總路由urls.py文件,引用include函數時,子URL路由urls.py文件,匹配URL是兩個URL相加的,注意“/”
例如:
#總路由 re_path('^index/',include('index.urls')), #子路由 re_path(r'^index/$',views.index1) #訪問的就是這個URL:http://127.0.0.1:8000/index/index/
也可以這樣寫(會發出警告,如果要在首部加“”/”建議在總路由的尾部加)
#總路由 re_path('^index',include('index.urls')), #子路由 re_path(r'^/index/$',views.index1) #訪問的就是這個URL:http://127.0.0.1:8000/index/index/
但是不能這樣寫,明顯URL發生改變了
#總路由 re_path('^index',include('index.urls')), #子路由 re_path(r'^index/$',views.index1) #訪問的就是這個URL:http://127.0.0.1:8000/indexindex/