2017-01-13 16 views
0

Если я выполнить следующий код:GAE хранилищу в Python не найти сущности, я знаю, существуют

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) 

Датастор никогда не может найти что-либо в запросе фильтра. Я создал 2 специальные страницы для обеспечения данных я ищу действительно существует, тот, который перебирает прочь u=db.GqlQuery(SELECT * FROM users) я прохожу U в шаблон дзиндзя, что итерирует

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

Я вижу ожидаемое имя пользователя.

Затем я создал шаблон дзиндзя, который принимает в:

users.all() 

Тогда я итерацию:

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

Имя пользователя, я ищу, Джо, производимую "Yay".

Почему Jinja может провести правильный матч, но Gql не может? Независимо от того, что я делаю, поиск, который фильтрует ли по «где» или по возврату .filter Нет

Ищет ключом, отлично работает и работает должным образом.

+0

Кроме того, users.username является db.StringProperty(), поэтому она должна быть проиндексирована –

ответ

0

Вы пробовали это?

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

Это мое предположение, тоже. –