2012-07-17 93 views
1

更新: 唯一的答案是不是帮助我。代码在本地系统上按需运行,但在部署的Python应用程序中无法运行。这是我的一系列问题。请给这个问题一个严重的第二个问题。user!= users.get_current_user()

下面是一些简化的代码来显示发生了什么。当简化代码放入SDK的交互式控制台时,它总是打印出Hello, schott.brian,但在已部署的应用程序中,它打印出的内容如no match。那是怎么回事?

user = "schott.brian" 
name = "schott.brian" 

if user and user == name: 
    print "Hello, " + user 
else: 
    print "no match" 

这是我的代码。注意第二个if检查if user and (user == person.user):

user = users.get_current_user() 
ID_id = self.request.get("ID", None) 
ID_id = ''.join(ID_id.split()) 
key = db.Key.from_path("PQ", ID_id) 
person = PQ.get(key) 
if person: #person's ID DOES exist already 
    logging.info("6 person %s" % person.user) 
    logging.info("6 key %s" % key) 
    logging.info("6 ID_id %s" % ID_id) 
    logging.info("6 user %s" % user) 
    if user and (user == person.user): 
      # never get here on gae, but works on sdk 
    else: 
      # always gets to here by mistake on gae, but works on SDKs 
      logging.info("7 user %s" % user) 
      logging.info("7 person %s" % person.user) 

此处列出在GAE代码日志和即使用户存在和 (用户== person.user),即如果子句没有成功。你能告诉我为什么吗?其中一个真的包含gmail.com,另一个不包含?

2012-07-17 15:39:19.993 6 person schott.brian 
I 2012-07-17 15:39:19.993 6 key ag1zfnBhcnRpY2lwb2xschMLEgJQUSILY29kZUJTY2hvdHQM 
I 2012-07-17 15:39:19.993 6 ID_id codeBSchott 
I 2012-07-17 15:39:19.993 6 user schott.brian 
I 2012-07-17 15:39:19.993 7 user schott.brian 
I 2012-07-17 15:39:19.994 7 person schott.brian 
+0

Moishe,产生相同的结果。但是,谢谢。其他想法?例如,它是if语句的其他部分(如果用户)是问题吗?顺便说一句,我认为users.get_current_user()*是用户ID。 – zerowords 2012-07-18 00:05:38

回答

7

user.get_current_user()返回一个对象。打印的用户它转换为字符串,所以也许你想要做的事,如:

if user and (str(user) == str(person.user)): 

但实际上你会更好比较的用户ID,而不是用户对象的字符串表示。

+0

你的回答是正确的,但不够。我也必须'str(person.user)'。 – zerowords 2012-07-18 10:23:31

+0

酷!不过,我真的鼓励你使用user.id进行比较。 – 2012-07-18 14:31:59

相关问题