第一个参数是一个模块路径的字符串就在分路由中加上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() ), ]