Мой код предназначен для:GqlQuery по идентификатору всегда возвращает None результат
- Извлечение user_id из печенья, если он существует.
- Запросить хранилище данных, используя user_id для извлечения пользовательской записи.
- И наконец, если запись найдена, отображается приветственное сообщение. (регистрация заносится на шаблон)
Я не могу заставить приложение отображать приветственное сообщение. Насколько я могу судить, проблема в том, что запрос всегда возвращает None. Я проверил файл cookie, и данные в хранилище данных существуют.
Что я делаю неправильно с этим запросом? Является ли дескриптор GQL в тех случаях, когда клаузулы не интуитивно понятны?
#Get cookie
user_id = self.request.cookies.get("user_id", 0)
#Query Datastore for matching user_id
user = db.GqlQuery("SELECT * FROM User WHERE id = %s" % user_id).get()
#If a user is found, display the username
if user.username:
signup = "Welcome, %s" % user.username
Итак, я уже получил эту несколько работающих с использованием метода get_by_id пользователя = User.get_by_id (Int (user_id)), но был запущен в ошибку, когда cookie не существует. Этот код также вызывает эту ошибку. Это связано с значением по умолчанию, которое я использую, когда cookie user_id не существует user_id = self.request.cookies.get («user_id», 0). Оказывается, метод from_path() не принимает 0 для аргумента id_or_name. Из документации Google App Engine: идентификатор, указанный как строка или длинный. Это не может быть число 0. – Hess
Ах да, вы совершенно правы - пропавший куки-файл сломает его.Я продолжу и отредактирую код, чтобы другие люди не сталкивались с одной и той же проблемой. –