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')
    

results matching ""

    No results matching ""