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

谢谢

推荐答案

在视图之间传递数据有不同的方式.实际上,这与在两个不同的脚本之间传递数据的问题没有太大区别&当然,进程间通信的一些概念也是如此.我脑海中浮现的一些事情是-

  1. GET request - First request hits view1->send data to browser -> browser redirects to view2
  2. POST request-(如您所建议)与上述流程相同,但在涉及更多数据时适用
  3. Django session variables-这是最简单的实现
  4. Client-side cookies-可以使用,但对可以存储的数据量有限制.
  5. Shared memory at web server level-很棘手,但可以做到.
  6. 如果你可以有一个独立的服务器,那么这个服务器就可以用睡觉的API来调用视图.
  7. Message queues-同样,如果可以使用独立服务器,甚至消息队列也可以工作.i、 e.第一个视图(API)接收请求并将其推送到队列,其他一些进程可以弹出消息并点击第二个视图(另一个API).这将使第一视图和第二视图API解耦,并可能更好地管理负载.
  8. Cache-也许像memcached这样的缓存可以充当中介.但是,如果要走这条路,最好使用Django会话,因为它隐藏了大量的实现细节,但如果需要考虑规模,memcached或redis是不错的 Select .
  9. Persistent storage-在某些持久存储机制(如MySQL)中存储数据.这通过中间有一个DB将参与请求(可能是面向客户端的API)与处理部分解耦.
  10. NoSql storages-如果写入速度是每秒数十万,那么MySQL性能将成为瓶颈(通过调整MySQL配置是有办法绕过的,但这并不容易).那么考虑NoSQL DB可能是另一种 Select .例如:DynamoDB、Redis、HBase等.
  11. 如果您的用例是实时计算,则可以 Select 类似于Stream ProcessingStormAWS Kinesis.事实上,您可以在中间使用AWS Lambda作为无服务器计算模块,它将读取并调用您的第二个视图API.
  12. Write data into a file-则下一个视图可以从该文件中读取(非常难看).这可能永远都不应该做,但将此点作为不应该做的事情放在这里.

再也想不到了.如果我得到任何信息我会更新的.希望这能在某种程度上有所帮助.

Django相关问答推荐

使用override_sets构建一个预装饰的类,以更快的客户端.登录?

如何在Django上创建ManyToMany管理面板?

try 获取静态文件路径时 Django 给出错误

Django Rest Framework 认证类覆盖 request.user

Django Inline Tabular admin:删除一个不工作的对象

在 Django 中处理信用卡付款的最佳 Select 是什么?

使用 args 和选项编写自定义管理命令 - 所需字段说明

关于Django中批量保存对象的问题

ModelForm 的 Django TextField max_length 验证

django 用一个提交按钮提交两种不同的表单

如何访问 Django Rest Framework 上的自定义 HTTP 请求标头?

根据模型属性获取django对象id

Django App 配置不当 - 应用程序模块有多个文件系统位置

Ruby on Rails 会影响网页的外观吗?

Heroku - 在 Django 应用程序中处理静态文件

Django 国际化语言代码

Django ORM 能否以可靠的与后端无关的方式存储无符号 64 位整数(又名 ulong64 或 uint64)?

Table doesn't exist表不存在

Heroku & Django:OSError: No such file or directory:'/app/{myappname}/static'

获取'str'对象在Django中没有属性'get'