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 ={}
非常感谢你!这完全解释了比赛情况,你的建议似乎已经解决了这个问题。