当前位置: 首页 > 面试题库 >

Django在视图之间传递数据

傅阳炎
2023-03-14
问题内容

我想知道在视图之间传递数据的“最佳”方法是什么。创建不可见字段并使用POST传递它是否更好,还是应该在URL中对其进行编码?还是有更好/更简便的方法


问题答案:

在视图之间传递数据有多种方法。实际上,这与在两个不同的脚本之间传递数据的问题并没有什么大的不同,当然还引入了一些进程间通信的概念。我想到的一些事情是-

  1. GET请求 -第一个请求命中view1->将数据发送到浏览器->浏览器重定向到view2
  2. POST请求 -(根据你的建议)与上述流程相同,但适用于涉及更多数据的情况
  3. Django会话变量 -这是最简单的实现
  4. 客户端Cookie-可以使用,但存储的数据量有限。
  5. Web服务器级别的共享内存 -棘手,但可以完成。
  6. REST API-如果你可以拥有独立服务器,则该服务器可以使用REST API来调用视图。
  7. 消息队列 -同样,如果可以使用独立服务器,甚至消息队列也可以工作。也就是说,第一个视图(API)接收请求并将其推送到队列中,其他一些进程可能会弹出消息并点击你的第二个视图(另一个API)。这将解耦第一视图API和第二视图API,并可能更好地管理负载。
  8. 缓存 -也许像memcached这样的缓存可以充当中介者。但是,如果采用这种方式,最好使用Django会话,因为它隐藏了很多实现细节,但是如果要考虑扩展性,则最好使用内存缓存或Redis。
  9. 持久存储 -将数据存储在某些持久存储机制(如mysql)中。通过在中间放置一个数据库,可以使你的参与请求(可能是面向客户的API)与处理请求分离。
  10. NoSql存储 -如果写入速度以每秒数十万的其他顺序进行,则MySql的性能将成为瓶颈(有一些方法可以通过调整mysql配置来解决,但这并不容易)。然后考虑使用NoSql DB作为替代方案。例如:dynamoDB,Redis,HBase等。
  11. 如果你的用例是实时计算,则可以选择诸如Storm或AWS Kinesis之类的流处理。实际上,你可以在中间使用AWS Lambda作为无服务器计算模块,该模块将读取并调用你的第二个视图API


 类似资料:
  • 问题内容: 我是iOS和Objective-C以及整个MVC范例的新手,我坚持以下几点: 我有一个充当数据输入表单的视图,我想给用户选择多个产品的选项。产品在另一个视图上以列出,并且我启用了多个选择。 我的问题是,如何将数据从一个视图传输到另一个视图?我将把选择保留在一个数组中,但是如何将其传递回先前的数据输入表单视图,以便在提交表单时将其与其他数据一起保存到Core Data? 我到处冲浪,看到

  • 问题内容: 我有点不知道该怎么做: 我有一些链式选择框,每个视图一个选择框。应保存每个选择,以便建立查询。最后,应运行查询。 但是,您如何在Django中共享状态?我可以从视图传递到模板,但不能从模板传递到视图,也不能从视图传递到视图。或者我真的不确定如何执行此操作。请帮忙! 问题答案: 有很多方法…在模板视图中…将变量放在表单的隐藏字段中。因此,当你以后续形式“提交”时,值将包含在以下reque

  • 问题内容: 我正在尝试将应用程序从Objective-C转换为Swift,但是我找不到如何使用Swift在视图之间传递数据。我的Objective-C代码是 这样做是从根本上获取变量TheNum,并将其传递给另一个视图控制器上的变量num。我知道这可能是一个简单的问题,但是我对Swift感到非常困惑,因此,如果有人可以解释他们如何将其更改为Swift,将不胜感激! 谢谢 问题答案: 假设我们站在

  • 需要帮助在视图寻呼机中的片段之间传递数据!我们尝试将数据作为包传递到片段中。碎片内部。方法,并尝试从另一个片段获取数据。getArguments()。 活动代码 片段代码: 在片段之间传递数据时需要帮助

  • Django 框架中推荐使用一个单独的 python 模块配置 URL 和视图函数或者视图类的映射关系,通常称这个配置模块为 URLconf,该 Python 模块通常命名为 urls.py。一般而言,每个应用目录下都会有一个 urls.py 文件,总的映射关系入口在项目目录下的 urls.py 中,而这个位置又是在 settings.py 文件中指定的。 本小节中将会学习 Django 中的路由

  • 我正在尝试在活动之间传递数据 我使用intents在常规活动之间传递数据 请考虑以下代码:: 假设我将来自名为的其他活动的数据作为意图发送到 现在,如何接收中的数据,这些数据是从获得的,然后再将其传递到中 象形表示为:: {EDIT}--如果根据答案可以这样做--不明确,因为AndroidTabRestaurantDescearchListView是一个选项卡活动