路由分发:
- 当项目中存在多个app时,为了方便管理,可使用路由分发
- 作用:方便管理/使URL 地址更加赏心悦目
- 使用方法:
- 子app中创建urls.py文件
- 主路由
-
path(‘app/’,app.urls)
-
反向解析
- 出现一个问题,比如我们把其中某个路由规则进行了修改,把 aaa 换成了 aba ,那么现在我们需要
回到每一个使用到这个路由的地方进行同步修改,这显然非常麻烦的,如果修改的路由更多,这甚至是一个灾
难 - django 也为我们提供了一个解决办法,通过为路由映射使用 name 参数,来为每一个路由映射设置一个独立唯
一的变量名 - 作用:在路由改变时,我们无需回头改路由的名字,节省时间
- 在需要a标签跳转时用{%url ‘函数名’%}来跳转,需要传参时,空格加参数。#‘abc’ 123 ‘def’
< a href="{% url ‘left’ ‘abc’ %}">右页面short
a标签需要问号传参时在%}后可直接加
- 视图层:需要django.shortcuts 模块下的 reverse 函数
return redirect(reverse(“left”,args=(‘aaa’,) ))
参数介绍
reverse(viewname,args=None,kwargs=None)
viewname:视图函数、命名路由映射、或视图函数路径的字符串
args:元组形式路由传参。
kwargs:字典形式路由传参
命名空间
- 若两个app同时有同一个index路由,访问时可能达不到效果,这时我们需用到命名空间
- 主路由中
-
path(‘app1/’,include(“app1.urls”,namespace=“app1”)),
- 这时我们给了这个app一个命名空间,接着我们会用命名空间的名字
-
- 需要a标签跳转时
-
< a href="{% url ‘app1:right’ 123 %}">app1的右页面
-
- 重定向时
-
return redirect(reverse(“app1:left”))
-