一、路由Router
在实际开发过程中,一个Diango 项目会包含很多的 app ,这时候如果我们只在主路由里进行配置就会显得杂乱无章,所以通常会在每个 app 里,创建各自的 urls.py路由模块,然后从根路由出发,将 app 所属的 url 请求,全部转发到相应的 urls.py 模块中。而这个从主路由转发到各个应用路由的过程叫做路由的分发
基础路由匹配可以参考之前的文章
在项目根目录中需要使用模版文件的话需要在根目录下创建一个templates文件夹并在settings里设置要DIRS
# 项目根目录
BASE_DIR = Path(__file__).resolve().parent.parent
在定义视图函views.py和配置路由urls.py的时候并没有先后顺序
大多数项目中需要对数据库进行增删改查的,所以还要用到models.py,其实一个项目的开始一般会先设计models,相当于设计数据库
# 注意 需要数据迁移
# 如果models.py文件有变动,需要重新迁移
# 生成迁移文件:python manage.py makemigrations
# 执行迁移文件:python manage.py migrate
执行完迁移操作后就会成功生成数据库
1.直接使用根路由
对应的视图函数
2.使用子路由
3.使用子路由可以使用命名空间 namespace
以上2种路由方式得到的结果是一样的
我们想要从首页点击跳转到用户页面,下面是2种路由的方式
一种是url路由方式,一种是反向解析方式
带命名空间的反向解析需要将url设置为带命名空间的
在html页面中写法需要带上namespace定义的名字
路由匹配,传参
在视图函数中新定义了一个user_detail函数
在用户列表页面按照带命名空间的反向路由写上链接
在用户详情页面将用户的数据都显示出来
这样在页面点击用户名就会跳转到用户详情页面
在页面末尾会自动带上数据库里取出来的主键作为user_id 传给user_detail视图函数
多个参数传递的方式,新定义一个user_ab_view的函数
以上是在html中做跳转的方法,以下再学习一下在视图函数中做跳转的方法
重定向需在导入2个包redirect, reverse
新定义一个重定向函数 my_redirect()
在浏览器中输入http://127.0.0.1:8000/App/myredirect
他就会自动跳转到用户列表页面http://127.0.0.1:8000/App/users/
反向解析
带关键字传参写法
如果用了命名空间,后面的反向解析包括视图函数和模板中都要使用命名空间。