Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django在视图之间传递数据_Python_Django_Django Views - Fatal编程技术网

Python Django在视图之间传递数据

Python Django在视图之间传递数据,python,django,django-views,Python,Django,Django Views,我想知道在视图之间传递数据的“最佳”方式是什么。创建不可见字段并使用POST传递更好,还是应该在URL中对其进行编码?还是有更好/更简单的方法?抱歉,如果这个问题很愚蠢,我对网络编程还很陌生:) 谢谢在视图之间传递数据有不同的方法。事实上,这与在两个不同脚本之间传递数据的问题没有太大区别&当然,进程间通信的一些概念也出现了。我想到的一些事情是—— 获取请求-第一个请求点击view1->将数据发送到浏览器->浏览器重定向到view2 POST请求-(如您所建议)与上述流程相同,但在涉及更多数据时适

我想知道在视图之间传递数据的“最佳”方式是什么。创建不可见字段并使用POST传递更好,还是应该在URL中对其进行编码?还是有更好/更简单的方法?抱歉,如果这个问题很愚蠢,我对网络编程还很陌生:)


谢谢

在视图之间传递数据有不同的方法。事实上,这与在两个不同脚本之间传递数据的问题没有太大区别&当然,进程间通信的一些概念也出现了。我想到的一些事情是——

  • 获取请求-第一个请求点击view1->将数据发送到浏览器->浏览器重定向到view2
  • POST请求-(如您所建议)与上述流程相同,但在涉及更多数据时适用
  • Django会话变量-这是最简单的实现方法
  • 可以使用客户端cookies,但存储数据量有限制
  • web服务器级别的共享内存-需要技巧,但可以做到
  • REST API的-如果您可以拥有一个独立的服务器,那么该服务器可以调用REST API的视图
  • 消息队列-同样,如果可以使用独立服务器,甚至消息队列也可以工作。i、 第一个视图(API)接收请求并将其推送到队列,其他一些进程可以弹出消息并点击第二个视图(另一个API)。这将解耦第一和第二视图API,并可能更好地管理负载
  • 缓存-可能类似缓存的缓存可以充当中介。但是,如果要走这条路,最好使用Django会话,因为它隐藏了大量的实现细节,但如果需要考虑规模,memcached或是很好的选择
  • 持久存储-将数据存储在某些持久存储机制中,如mysql。这将使您的请求从处理部分中分离出来(可能是面向客户端的API),中间有一个DB。
  • NoSql存储-如果写入速度为每秒数十万次,那么MySql性能将成为瓶颈(有办法通过调整MySql配置来解决,但并不容易)。然后考虑NoSql DB可能是一种替代方案。e、 g:dynamoDB、Redis、HBase等
  • 流处理-如果您的用例是实时计算,则类似或可能是一个选项。事实上,你可以在中间使用一个无服务器的计算模块,它可以读取并调用你的第二个视图API。
  • 将数据写入文件中-然后下一个视图可以从该文件中读取数据(真实)。这可能永远都不应该做,但把这一点作为不应该做的事情放在这里

  • 我想不起来了。如果我得到任何信息,将进行更新。希望这在某种程度上有所帮助。

    我不知道是否可以从这个广泛的问题中确定最佳方案。你能举两种观点的例子吗?您可以根据数据类型执行任何操作。会话键、隐藏表单字段、查询字符串。会话键可以工作。会话就是答案!没有比这更简单更好的方法了。会话数据可以保存在数据库、文件或cache.nice列表中。会议是一个很好的开始。使用get和POSTS将变量从一个视图链接到另一个视图是messy@pastylegs同意,get&POST会很快变得混乱。会话是为此类操作而构建的。我的帖子反映了这种观点。请添加我可能遗漏的任何内容…文件一(6)听起来很脏。我建议把它从令人敬畏的列表中删除。@MohitC是的,它真的很难看。保留它以确保答案的完整性。不管怎样,我听你说,将第6点移到最后,并为此提出了免责声明。当数据不可JSON序列化时会发生什么?在这种情况下,您不能在会话中存储de数据。有时,全局定义变量很有用,例如,对于机器学习模型。