python中的GAE数据存储区找不到我认识的实体

时间:2017-01-13 23:52:01

标签: python google-app-engine datastore gql

如果我执行以下代码:

def post(self):
    name = self.request.get('username')
    password = self.request.get('password')
    user_is = users.all().filter('name =', name).get()
    params = dict()
    if user_is:
        hashword = user_is.password
        if check_password(username, password, hashword):
            key = db.Key.from_path('users', str(user_is.key().id()))
            c = db.get(key)
            secret_cookie = make_cookie_secret(c)
            self.response.headers.add_header('Set-Cookie', "user_id=%s; Path=/" % secret_cookie)
            self.redirect('/blog/userwelcomepage')
        else:
            params['passworderror'] = "Invalid username/password"
            self.render("pagelogin.html", **params)
    else:
        params['usernameerror'] = "No such user"
        self.render("pagelogin.html", **params)

数据存储区永远无法在过滤器查询中找到任何内容。我已经创建了两个特殊页面,以确保我正在寻找的数据确实存在,一个迭代u=db.GqlQuery(SELECT * FROM users)我将你传递给一个迭代的jinja模板

{% for i in u %}i.username<br>i.password<br>i.email{% endfor %}

我看到了预期的用户名。

然后我创建了一个jinja模板:

users.all()

然后我迭代:

{% for i in users %}{% if i.username == "Joe"%}Yay{% else %}nope{% endif %}{% endfor %}

我正在寻找的用户名Joe生成一个&#34; Yay&#34;。

为什么jinja能够正确匹配,但Gql不能?无论我做什么搜索,过滤是否通过&#34; where&#34;或者.filter返回无

按键搜索很好,按预期工作。

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

user_is = users.all().filter('username =', name).get()