今天在自己的网站上添加了个评论的功能,因为要手记发表评论者的email跟名字,就涉及到了数据判断的问题,如果email已经在数据库里就不保存,否则就保存,
client=Client()
client.name=self.request.get('name')
client.email=self.request.get('email')
email=client.email
client.date =self.request.get('date')
query = db.GqlQuery("SELECT * FROM Client") 将所有客户数据取出
s=[]
for i in query:
s.append(i.email)
if email in s: 这里就是判断
pass
else:
client.put()
而不能直接这样判断:
query = db.GqlQuery("SELECT * FROM Client")
for i in query:
if email==i.email: 这里明显是错误的,因为他在循环的时候是验证每一次的i.email的,所以就不准确
pass
else:
client.put()
还有个问题就是在后台判断实体的ID:
def get(self,id):
infoId = int(id)
info = Info.get_by_id(infoId)
if info.category.key().id()==3001 or info.category.key().id()==2:
value=1
else:
value=0
这里的判断:info.category.key().id()==3001,而不是像django里的info.category.key.id==3001!
最后我还有个错误,因为总是命名不规范,我先把程序上传到gae,后来就把不规范的class名字改了,结果就全错了,所以注意::
如果在本地跑没事,但是上传到gae的程序的类model
gae的db.DateTimeProperty()默认的是日期时间值作为 UTC 时区存储
所以就要改!
先写一个类:
class JuxinUtils(object):
def cntime(self):
return datetime.datetime.utcnow() + datetime.timedelta(hours=+8)
然后在保存日期的时候这样保存
juxinUtils = JuxinUtils()
ms.date = juxinUtils.cntime()
ms.put()
就是在UTC时区加八个小时就是北京时间!