关于django路由问题(路由分发 反向解析 命名空间)

路由分发:

  • 当项目中存在多个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”))

结论:这些是django中url的一些用法。使用时,增加代码的重用性,也方便我们管理,使条理清晰。

你可能感兴趣的:(django)