Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自名为variable的模板集的Django方法调用。这怎么可能呢?_Python_Django - Fatal编程技术网

Python 来自名为variable的模板集的Django方法调用。这怎么可能呢?

Python 来自名为variable的模板集的Django方法调用。这怎么可能呢?,python,django,Python,Django,在视图中,我从模板调用一个方法,如下所示: {{ stakeholder.get_avg_endorsement|floatformat:1 }} 方法如下所示: def get_avg_endorsement(self, stakeholder_cache={}): if stakeholder_cache.has_key(self.id): print "gae cached:", stakeholder_cache[self.id], stakeholder_ca

在视图中,我从模板调用一个方法,如下所示:

{{ stakeholder.get_avg_endorsement|floatformat:1 }}
方法如下所示:

def get_avg_endorsement(self, stakeholder_cache={}):
    if stakeholder_cache.has_key(self.id):
        print "gae cached:", stakeholder_cache[self.id], stakeholder_cache, locals()
        return stakeholder_cache[self.id]
    ...
[Thu May 05 17:31:46 2016] [error] ot----- <- start of the view
[Thu May 05 17:31:47 2016] [error] gae cached: 1.33333333333 {5661L: 1.3333333333333333}
[Thu May 05 17:31:47 2016] [error] gae cached: 1.33333333333 {5661L: 1.3333333333333333}
[Thu May 05 17:31:47 2016] [error] gae cached: 1.33333333333 {5661L: 1.3333333333333333}
我所期望的是,这个特定的调用总是有一个空的缓存。但是,有时get_avg_背书会产生错误的值,然后打印跟踪如下所示:

def get_avg_endorsement(self, stakeholder_cache={}):
    if stakeholder_cache.has_key(self.id):
        print "gae cached:", stakeholder_cache[self.id], stakeholder_cache, locals()
        return stakeholder_cache[self.id]
    ...
[Thu May 05 17:31:46 2016] [error] ot----- <- start of the view
[Thu May 05 17:31:47 2016] [error] gae cached: 1.33333333333 {5661L: 1.3333333333333333}
[Thu May 05 17:31:47 2016] [error] gae cached: 1.33333333333 {5661L: 1.3333333333333333}
[Thu May 05 17:31:47 2016] [error] gae cached: 1.33333333333 {5661L: 1.3333333333333333}

[Thu May 05 17:31:46 2016][error]ot-----您的问题在于函数中的参数

def get_avg_endorsement(self, stakeholder_cache={})
这会产生问题,因为在执行函数时始终会计算默认参数。有关详细信息,请查看:

改为这样做:

def get_avg_endorsement(self, stakeholder_cache=None):
    if stakeholder_cache is None:
        stakeholder_cache ={}

非常感谢你!这完全解释了比赛情况,你的建议似乎已经解决了这个问题。