路由分发时名称空间的2种写法

第一个参数是一个模块路径的字符串就在分路由中加上app_name

主路由的写法:

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

urlpatterns = [
    path('admin/', admin.site.urls),
  
  # 这里的namespace可以不写,不写的话默认就是app_name—— 看源码 re_path(
'^book/', include('book.urls',namespace='book')), ]

很明显:路由分发在了book应用下的urls.py文件中。

book应用下的urls.py文件中的内容如下:在这里面加上app_name——就是名称空间的值。

from django.urls import path,re_path

from book import views

app_name
= 'book'
urlpatterns = [ re_path('^books/',views.BookView.as_view() ), ]

第一个参数是一个元组的情况

如果第一个参数是一个元组,根据源码可知:

元组的第一个元素应当是module的路径,第二个元素是app_name:

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

urlpatterns = [
    path('admin/', admin.site.urls),
  # 元组传参的写法 re_path(
'^book/', include(('book.urls','book'))), ]

此时,在分发的urls.py文件中直接写urlpatterns就好了:

from django.urls import path,re_path

from book import views

urlpatterns = [
    re_path('^books/',views.BookView.as_view() ),
]
原文地址:https://www.cnblogs.com/paulwhw/p/11350751.html