一、分发
补充:通过查看源码:可以通过二级路由include进行二次分发
位置:urls.py
urlpatterns = [ path('admin/', admin.site.urls), path('wu/', ([ path('test01/', ([ path('add/', view.add) ]),None, None),
path('test02/', views.test02), path('test03/', views.test03), ], None, None)),
注意:path 后面 不加视图 加tuple
格式:path('', ([], None, None))
二、分发优化
位置:urls.py
def list_view(request): print(request.path) return HttpResponse("list_view") def add_view(request): print(request.path) return HttpResponse("add_view") def change_view(request, id): print(request.path) return HttpResponse("change_view") def delete_view(request, id): print(request.path) return HttpResponse("delete_view") # 产生增、删、该、查的url def get_urls2(): t = [] t.append(path('', list_view)) t.append(path('add/', add_view)) t.append(path('<id>/change/', change_view)) t.append(path('<id>/delete/', delete_view)) return t # 产生表url def get_urls(): temp = [] # 具体情况看源码 # admin.site._registry.items() 以字典的形式存放模型对象和样式对象 # models._meta.app_label 获取 模型对象的app名称 # models._meta.model_name 获取 模型对象的表名称 for models, admin_class_obj in admin.site._registry.items(): app_name = models._meta.app_label models_name = models._meta.model_name temp.append(path('%s/%s/' % (app_name, models_name), (get_urls2(), None, None))), return temp urlpatterns = [ path('admin/', admin.site.urls), # get_urls [ ] path('wu/', (get_urls(), None, None)), ]