django中路由分发的认识
一、路由分发的概念
所谓的路由分发就是在开发项目过程中可能有很多个app
,每个app
里面又有很多视图,如果全部写在入口的urls.py
里面可能就会很多行代码, 不方便管理, 这时候就要使用路由分发的概念, 实现过程分为以下几步:
1、在
app
里面单独创建一个urls.py
from django.urls import path from . import views urlpatterns = [ path('index/', views.index) ]
2、在入口的
urls.py
中引入app
里面的urls.py
文件from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('app2/', include('app02.urls')) ]
3、访问的时候直接输入
http://localhost:9000/app2/index/
就可以
二、关于命名空间的使用
- 1、当项目比较大的时候,全部使用了路由分发的时候,可能会出现路由重名的时候,就需要使用一个命名空间来包裹一层
2、在主的
url
地址中使用命名空间from django.urls import path, include import xadmin from users.views import index urlpatterns = [ path('xadmin/', xadmin.site.urls), path('', index.IndexView.as_view(), name='home'), path('user/', include('users.urls', namespace='users')), ]
3、在
app
中的url
中定义app_name
(注意要与定义的app
名字一致)from django.urls import path from .views import login, register, captcha app_name = 'users' urlpatterns = [ path('login/', login.LoginView.as_view(), name='login'), path('register/', register.RegisterView.as_view(), name='register'), path('captcha/', captcha.CaptchaView.as_view(), name='captcha') ]
4、在
url
中使用命名空间(命名空间:url的name
)# 在heref=""使用 url 'users:register'
5、在
html
如果要使用模板的时候要加前缀' users.register_form.captcha '
6、如果前端页面中要传递参数
' users.register_form.captcha 参数 '
7、在重定向的时候
return redirect('users:login')