浅谈在django中使用redirect重定向数据传输的问题


Posted in Python onMarch 13, 2020

环境:

python 3.6.4

django2.0.6

使用重定向redirect(‘url name') 如果不需要传数据的话那这样就OK了 如果要传数据的话 我琢磨了半天 还是决定用session来传输

所以 就这么干:

request.session['key_name] = value

request.session['msg'] = u'用户未登录'

然后在模板中使用:

<h1>{{ request.session.username }}</h1> {# 输出username保存的值 #}
{# {{ request.session['username' }} 以及{{ request.session.get('username') }} 和{% request.session.get('username') %} 都是错误的写法 #}}

就可以了。嗯 搞定。

补充知识:在django中,redirect如何传递message。

众所周知,在django中,默认的message,只能在同一个request中传递。

但如果在请求过程中,使用了redirect跳转,那么,这个一次性的message就会失败,

无法在前端给用户提示。

https://stackoverflow.com/questions/29673537/django-redirect-with-context/29673951#29673951

网上提供的思路,有如下两种:

一,使用message框架中的storeage存储实现。我觉得如果消息使用得频繁,且消息比较长时使用。

二,使用session来实现,这个实现更简单,但不可太频繁使用。

下面,就使用第二种来试试吧。

1,在有redirect的view中,加入session。

# 跨request传递message,使用session。
self.request.session['create_app'] = name
return redirect(reverse_lazy('app:list', args=()))

2,在需要获取message的view中,加入消息。

# 获取创建组件成功的session提示,同request传递message。
create_app = self.request.session.pop('create_app', False)
if create_app:
   messages.info(self.request, '{}创建成功,请编辑它的配置!'.format(create_app))

3,在前端网页中,显示此message。

{% for message in messages %}
<div class="alert alert-success alert-dismissible fade in" role="alert">
  <button type="button" class="close" data-dismiss="alert" aria-label="Close">
    <span aria-hidden="true">×</span>
  </button>
  <strong>组件创建提示!</strong> {{ message }}.
</div>
{% endfor %}

4,样子

浅谈在django中使用redirect重定向数据传输的问题

以上这篇浅谈在django中使用redirect重定向数据传输的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python在windows命令行下输出彩色文字的方法
Mar 19 Python
python实现将汉字转换成汉语拼音的库
May 05 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
May 21 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
轻松实现TensorFlow微信跳一跳的AI
Jan 05 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
Python实现读取Properties配置文件的方法
Mar 29 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
详解Python字典的操作
Mar 04 Python
python实现简单五子棋游戏
Jun 18 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
在Django中预防CSRF攻击的操作
Mar 13 #Python
Anaconda+Pycharm环境下的PyTorch配置方法
Mar 13 #Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 #Python
django 取消csrf限制的实例
Mar 13 #Python
django-csrf使用和禁用方式
Mar 13 #Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 #Python
python爬虫实现获取下一页代码
Mar 13 #Python
You might like
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
php比较两个字符串长度的方法
2015/07/13 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
jquery ajax abort()的使用方法
2010/10/28 Javascript
javascript常用方法总结
2015/05/14 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
微信小程序版翻牌小游戏
2018/01/26 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
Python实现的一个简单LRU cache
2014/09/26 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
super()与this()的区别
2016/01/17 面试题
写一个方法1000的阶乘
2012/11/21 面试题
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
总经理秘书工作职责
2013/12/26 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis
Oracle使用别名的好处
2022/04/19 Oracle