Django在内存中保持变量,即使我刷新页面也是如此

时间:2015-04-15 14:18:10

标签: python django variables static

我正在使用Django Framework 1.7及其网络服务器。

我有一个自定义类,我在其中声明一个静态变量,一个列表,其中我附加了一些值:

class my_class:

    list = [] 

    def __init__( self, *args, **kwargs ): 
        [...]

    def append_value(self,value):
        self.list.append( value )

我使用静态变量,因为我调用此函数的次数不同。 在单页加载期间,我的类运行良好,但我注意到my_class.list永不过期。

要重置列表,我必须重新启动网络服务器。

我来自PHP和Perl,每次刷新页面时,如果不以某种方式保存它们,则清除所有变量。

我使用会话,当然,但我不会将该列表保存到会话中,至少不是自愿的。

注意:在脚本执行期间,我不知道第一次或最后一次调用my_class()。

每次重新加载/更改页面时,如何重置列表?

编辑:

好我尝试更好地解释我的情况

  • 我有一个类是“javascript存储库”。它的作用是用一串javascript函数来响应 Javascript函数以独立的模块(函数列表)组织,因此我可以将所需的函数附加到我的页面 不同的模块可以共享相同的功能。
  • 在我的视图中,我指定了一个函数的url(它在同一个视图中),get_js_code,其规则是返回javascript代码(使用:return HttpResponse(code,content_type="application/x-javascript")
  • get_js_code启动“javascript存储库类”,询问一个或多个模块(函数列表),并且我的类只返回一次函数,即使函数属于多个模块。
  • 在我的模板中,我将get_js_code url指定为javascript资源,并使用Django页面下载javascript代码

效果很好 BUT

  • 每个应用程序都需要一个模块,所以我在一个中间件中指定了一个url,它引用了另一个启动该类的应用程序/函数,以便将javascript资源作为常用的javascript模块附加。

以下是问题

  • 我的“javascript存储库类”有一个包含返回的javascript函数列表的列表,以便只返回一次函数。它运行良好但只有一次:事实上,如果我重新加载页面,列表不会过期,也不会返回任何javascript函数。

很难解释,我希望它现在清楚。

PS:我错了,我没有在中间件中启动课程。

PPS:我知道将JavaScript代码放在Python代码中是不寻常的,但我正在测试这个解决方案。

1 个答案:

答案 0 :(得分:0)

将其定义为实例变量而不是类变量。

class my_class:

    def __init__( self, *args, **kwargs ): 
        self.list = []

请注意,如果您在中间件中设置内容,则仍需要了解此问题;永远不要在中间件类的__init__中设置任何状态,因为它只在进程启动时执行一次。