53. Django 2.1.7 redirect重定向数据传输的问题

2022-01-17 09:31:32 浏览数 (1)

问题描述

Django 在从一个视图重定向至另一个视图的时候,需要使用return redirect('另一个视图的url') 来进行重定向,并不能像render方法一样给模板传递参数。那么如果需要传递一些参数到另一个视图去使用呢?

场景例如:从视图1传递参数提供视图2弹窗显示。

解决的思路

直接单一使用redirect方法是没有办法传递的参数的,那么可以采用cookie和session这两种方式来存储数据,然后在另一个视图进行读取。从而折中达到这种传递参数的效果。

那么知道解决的思路之后,相信大部分就自己怎么处理了,下面来做个简单的示例。

redirect参数传递示例

下面使用session存储数据的方式来进行一个数据传递的示例。

1) 编写一个存储session参数数据,然后redirect另一个视图B的视图A

代码语言:javascript复制
def session_test(request):
    request.session['msg']='提示消息内容'
    return redirect('assetinfo:session_test_display')

2) 编写读取session参数的视图B

代码语言:javascript复制
def session_test_display(request):
    return render(request, 'assetinfo/session_test.html')

3)编写视图B使用的模板,直接读取session的数据

代码语言:javascript复制
<h1>{{ request.session.msg }}</h1>

4)测试访问视图A,然后重定向至视图B,查看是否正常显示session的数据在模板中展示

访问视图A:http://127.0.0.1:8000/assetinfo/session_test

浏览器重定向视图B后显示如下:

5)查看Django的日志,确认请求:

代码语言:javascript复制
[22/Aug/2019 00:05:10] "GET /assetinfo/session_test HTTP/1.1" 302 0 # 302重定向
[22/Aug/2019 00:05:10] "GET /assetinfo/session_test_display HTTP/1.1" 200 201

0 人点赞