【问题标题】:Duplicate Modules复制模块
【发布时间】:2012-08-11 16:22:16
【问题描述】:

在 Django 应用程序中,我有一个额外的模块。所以我的应用程序被称为标题,在其中我有一个模型、视图和一个头文件。在头文件中,我有一个名为 resources 的类,它可以执行我想要的操作,但由于某种原因,在页面刷新时,它会复制信息。

查看:

def home(request):
header = Resources("home") #generate the resources for this page

return render_to_response('pages/index.html', {'header': header, 'content': test})

资源:

class Resources(object):

javascript_resources = []
javascript_files = []
style_sheets = []

def __init__(self, page_id = "home"):
    self.page_id = page_id.lower()
    self.get_status()
    self.get_meta()
    self.get_javascript()
    self.get_style_sheets()

def get_status(self):

def get_meta(self):

def get_javascript(self):

def get_style_sheets(self):

所以发生的情况是,header.javascript_resources 列表应该只有 3 个成员长,但它会添加每个副本。因此,出于某种原因,即使在页面刷新之后,该对象仍保留在内存中。这是什么原因造成的?

【问题讨论】:

    标签: python django django-models django-views python-module


    【解决方案1】:

    问题似乎是您将javascript_resources 创建为类变量。尝试在__init__ 方法中移动它的初始化。

    【讨论】:

      【解决方案2】:

      javascript_resourcesResource 的一个属性,所以如果你在后续请求中添加东西,它们会“加起来”。

      如果您希望每个请求都有一个空的javascript_resources,请将其设为实例的属性(即在__init__ 中对其进行初始化)或在实例化Resource 之前将其清空。

      【讨论】:

        猜你喜欢
        • 2015-11-12
        • 2014-02-08
        • 2018-06-03
        • 2016-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-01
        相关资源
        最近更新 更多