1. 程式人生 > 其它 >django 路由詳解(三)

django 路由詳解(三)

 路由的名稱空間和路由命名

  一般情況下,隨著專案越做越大,網站規模也會越大,其中網頁的數量也會增多,如果網站的網址路由過多,在管理或者維護上就會存在一定難度,Django可以為每條路由設定名稱空間或路由命名。

名稱空間namespace

如以下程式碼,在專案的urls.py中重新定義路由資訊:

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

urlpatterns = [
    path('admin/', admin.site.urls),
    #指向myApp的路由檔案urls.py
    path(
"",include(("myApp.urls","myApp"),namespace="myApp")), #指向user的路由檔案urls.py path("user/",include(("user.urls","user"),namespace="user")), ]

通過include函式將路由分別指向myApp和user兩個應用的urls.py,在include函式中有兩個引數(args,namespace),引數args(必選引數)指向專案應用App的urls.py檔案,其資料格式以元祖或字串的形式表述;namespace(可選引數)是路由的名稱空間。

  • 第一個元素為專案應用的urls.py檔案,比如(“myApp.urls”,"myApp")的myApp.urls,這是代表專案應用myApp的urls.py檔案、
  • 第二個元素可以自行命名,但不能為空。一般情況下是以專案應用的名稱進行命名。如(“myApp.urls”,"myApp"),myApp是專案應用的命名。

路由命名name

 在include函式中的namespace和在path/re_path中使用的name引數不在同一個函式,所以,這是允許的。

路由命名程式碼如下:

#user urls.py
from django.contrib import admin
from django.urls import path,re_path,include
from . import views

urlpatterns = [
    path(
"index/",views.index,name="index"), path("login/",views.userLogin,name="userLogin"), ]

啟用django服務,在瀏覽器訪問的效果如下: