Skip to main content
 首页 » 编程设计

python之在 Django 中对同一 View 的请求之间共享数据

2025年02月15日29mayingbao

我在django中有一个简单的 View

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 

我想在对 SimpleView 的不同请求中共享 x

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

  1. 某人#1 向 SimpleView 请求 get。 x 未设置,因此将从外部服务器获取。

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

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

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

怎么做?

(django 1.6)

请您参考如下方法:

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

通常 session 引擎被配置为使用数据库;可以使用其他后端,但很少有充分的理由这样做。

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