【问题标题】:Sharing data between requests to the same view in django在 django 中对同一视图的请求之间共享数据
【发布时间】:2017-08-21 17:02:11
【问题描述】:

我在 django 中有一个简单的视图

class SimpleView(View):   
    def get(self, *args, **kwargs):   
        c = C()
        c.m()

class C:
    def m(self):
        x = # get from an external server if not set

我想在不同的请求中分享xSimpleView

例如,让我们考虑以下场景:

  1. 某人#1 向SimpleView 请求get。 x 没有设置,所以会从外部服务器获取。

  2. 某人#2 向SimpleView 请求get。 x 已设置,因此不会从外部服务器获取。

我知道那段代码不会这样做。我知道什么是全局变量。但是,我不知道如何在不同请求之间共享数据。我不想使用数据库来存储它(因为优化) - 值 x 不必是持久的。

请注意,如果共享某些东西的方法是线程安全的,那就太好了(这不是必需的,我会处理它)。

怎么做?

(django 1.6)

【问题讨论】:

    标签: python django python-2.7


    【解决方案1】:

    由于您不需要永久存储数据,因此您应该为此使用session store。

    会话引擎通常配置为使用数据库;可以使用其他后端,但很少有任何好的理由这样做。

    (另请注意,您应该升级您的 Django 版本;1.6 版本太旧,不受支持,而且可能不安全。)

    【讨论】:

    • 谢谢! :),我还有两个问题:根据我对session 的基本理解,它不是由不同的客户共享的,也许我在这里误解了会话,是吗?
    • 另一种解决方案怎么样?
    • 为什么要在客户之间分享价值?
    • 因为x 对于每个请求都是通用的。每次获取都太昂贵了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多