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