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服务,在浏览器访问的效果如下: