重定向时传输数据

在控制器方法重定向到视图时,原始请求结束并发起新的GET请求,导致模型数据丢失。可以通过两种方式传递数据:1) 使用URL模板传递简单类型参数;2) 利用flash属性将数据存入会话并在目标页面取出。示例代码展示了这两种方法的应用。
摘要由CSDN通过智能技术生成
概要:
当一个处理器方法完成之后,该方法所指定的模型数据将会复制到请求中,并作为请求中的属性,请求会转发(forward)到视图上进行渲染。因为控制器方法和视图所处理的是同一个请求,所以在转发的过程中,请求属性能够得以保存。
但是,当控制器的结果是重定向的话,原始的请求就结束了,并且会发起一个新的GET请求。原始请求中所带有的模型数据也随着请求消亡了。

有两种方式可以在重定向中传输数据 :
使用URL模板以路径变量和/或查询参数的形式传递参数。// 只能传递简单类型的参数
通过flash属性发送数据

方式一的示例:
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
在 Django 中使用 `redirect` 进行重定向,可以通过 URL 参数或者 session 来传递数据。 1. 通过 URL 参数传递数据 在原视图函数中将数据转换成 URL 参数,在重定向将参数带上即可。示例代码如下: ```python from django.urls import reverse from django.shortcuts import redirect def original_view(request): data = {'name': 'Alice', 'age': 18} url = reverse('redirected_view') + '?name={}&age={}'.format(data['name'], data['age']) return redirect(url) def redirected_view(request): name = request.GET.get('name') age = request.GET.get('age') # do something with name and age return HttpResponse('Hello, {}! You are {} years old.'.format(name, age)) ``` 2. 通过 session 传递数据 在原视图函数中将数据存入 session 中,在重定向后的视图函数中从 session 中取出数据即可。示例代码如下: ```python from django.urls import reverse from django.shortcuts import redirect def original_view(request): data = {'name': 'Alice', 'age': 18} request.session['data'] = data return redirect(reverse('redirected_view')) def redirected_view(request): data = request.session.get('data') name = data.get('name') age = data.get('age') # do something with name and age return HttpResponse('Hello, {}! You are {} years old.'.format(name, age)) ``` 需要注意的是,如果使用 session 传递数据,需要在 `settings.py` 中设置 session 的存储方式。例如: ```python SESSION_ENGINE = 'django.contrib.sessions.backends.db' ``` 以上是在 Django 中使用 `redirect` 进行重定向传递数据的两种方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值