我試圖讓這個功能限制用戶每張圖片只有一個投票。但是它目前可以讓所有選票都通過。如果我將「if existing_vote!= 0:」更改爲「if existing_vote == 0:」,它將不允許投票。思考?Google App Engine中的VoteHandler
類VoteHandler(webapp.RequestHandler):
def get(self):
#See if logged in
self.Session = Session()
if not 'userkey' in self.Session:
doRender(
self,
'base/index.html',
{'error' : 'Please login to vote'})
return
#If user hasn't voted - if user doesn't have a vote on that image object
key = self.request.get('photo_id')
vurl = models.Image.get_by_id(int(key))
#pull current site vote total & add 1
existing_vote = models.Vote.all().filter('user=', self.Session['userkey']).filter('photo=',vurl).count()
if existing_vote != 0:
self.redirect('/', { })
else:
newvote = models.Vote(user=self.Session['userkey'], url=vurl)
vurl.votes += 1
vurl.put()
logging.info('Adding a vote')
#Create a new Vote object
newvote = models.Vote(user=self.Session['userkey'], url=vurl)
newvote.put()
self.redirect('/', { })
對於型號:
類用戶(db.Model):
帳戶= db.StringProperty()
password = db.StringProperty()
名稱= db.StringProperty()
創建= db.DateTimeProperty(auto_now =真)
類Image(db.Model):
用戶= db.ReferenceProperty(用戶)
photo_key = db.BlobProperty()
網站= db.StringProperty()
文本= db.StringProperty()
創建= db.DateTimeProperty(auto_now =真)
票= db.IntegerProperty(缺省= 1)
類投票(db.Model):
用戶= db.ReferenceProperty(用戶)#See如果投在這個網站還
照片= db.ReferenceProperty(圖)q若要申請投票向右URL
給予好評= db.IntegerProperty(默認值= 1)
創建= db.DateTimeProperty(auto_now = TRUE)
計數等於什麼?添加日誌記錄並試圖找出這實際返回的內容: existing_vote = models.Vote.all()。filter('user =',self.Session ['userkey'])。filter('photo =' ,vurl).count() 一個更好的實現是創建一個投票類作爲用戶在一個實體組中的用戶的子對象,其中的photoId作爲關鍵字。 偏離主題,但你介意我爲什麼要實現自己的用戶類而不是使用Google帳戶或OpenID? – 2010-09-01 23:09:59
1.日誌顯示existing_vote = 0 2. n00b在這裏,並在創建用戶類的書中去教程... – Emile 2010-09-01 23:13:55