1
我正在做一个网站,使用金字塔,SQLAlchemy的和变色龙... 在view.py我送的SQLAlchemy:SQL炼金术+金字塔 “请求缓存”
@view_config(route_name='entity_subpage')
def entity_subpage_view(request):
dbsession = DBSession()
User = dbsession.query(Users).filter_by(id=0).first()
return render_to_response('page.pt', User=User, request=request)
和变色龙:
<a tal:condition="user.minions.filter_by(dead=0).count() > 1">Prev</a>
<a tal:condition="user.minions.filter_by(dead=0).count() > 1">Next</a>
<repeat tal:omit-tag="" tal:repeat="_page user.minions">
<condition tal:omit-tag="" tal:condition="not minion.dead">
<li>
${minion.name}
</li>
</condition>
</repeat>
但SQLAlchemy的 “user.minions.count()” 运行两次,所以我说这个模型上:
class Users(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(convert_unicode=True))
minions = dynamic_loader("Minions", backref="User")
_NumFixedMinions = None
@property
def NumAliveMinions(self):
if not self._NumFixedMinions:
self._NumFixedMinions = self.minions.filter_by(dead=0).count()
return self._NumFixedMinions
,并开始使用“NumFixedMinions”而不是“.count()”,但是这使得_NumFixedMintions被定义,直到我重新启动服务器,我错过了什么?或者是有什么办法只在请求做一个简单的“缓存” ..
PS:这不是真正的代码,它很难知道什么时候事端将两倍于网站上使用的模块化
在这种情况下是...但我的网站是模块化的,用户可以在同一个页面内扮演多个小部件和页面,因此很难知道“count”会被调用多少次,有时可能是分配次数......或者没有一个 – Joaolvcm 2013-03-23 16:02:53
,这更接近我所需要的,我想要更直接的东西,但如果不得不d像这样,它可能并不那么糟糕 – Joaolvcm 2013-03-23 17:24:36