Django路由

  1. 静态路由
  2. 动态路由
  3. 路由分发
  4. 路由命名
  5. 命名空间

静态路由

1
2
path('路由映射字符串/', views.index)
path('abc/', views.index)

动态路由

将参数做到连接里

  • 路由命名传参:

    • 1
      path('index/<str:name>/<int:age>/', views.index),
    • 1
      re_path(r'^index/(?P<name>[a-z]{3})/(?P<age>\d{1,2})/',views.index ),
    • 1
      (?P<id>\w+)/
  • 路由非命名传参:更灵活,但是必须对应参数位置

    • 1
      re_path(r'^index/([a-z]{3})/(\d{1,2})/',views.index)
  • 空白符号:\r \n \v \t \b

路由分发

  • APP:业务分化,方便团队合作

  • 主路由文件:只做分发

  • 子路由文件:需要我们手动创建,实现视图映射

  • 主路由-》子路由-》分发

路由命名

当路由修改时,如果HTML页面跳转与视图函数重定向使用的是原始的连接内容,那么都需要更改

耦合性太强

现在通过路由反向解析,可以解决这个问题

  • path(‘’, views, name=)

  • html:

    • 1
      href={% url 'url_name' 'args1' 'args2'... %}
  • views:

    • 1
      2
      from django.shortcuts import render,redirect,reverse
      redirect(reverse('url_name',args=('args1','args2')))

命名空间

  • 在路由文件:子路由

    • app_name 全局变量,一般使用app名作为命名空间名
  • 1
    href={% url 'app_name:url_name' 'args1' 'args2'... %}
  • 1
    2
    from django.shortcuts import render,redirect,reverse
    redirect(reverse('app_name:url_name',args=('args1','args2')))

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com
目录
主站