Не удается получить результаты при передаче строки с помощью подстановки параметров в запросе gql
-
11-09-2019 - |
Вопрос
Я могу правильно передать строковую переменную в gqlquery с помощью подстановки параметров, вот код, который я пытался использовать;
user_name = self.request.get('username') #retrieved from UI
p = models.UserDetails.all().filter('user_name = ', user_name).fetch(1)
Я не получаю никаких результатов, и запрос завершается безрезультатно.Но когда я жестко кодирую запрос следующим образом ,
p = models.UserDetails.all().filter('user_name = ', "peter rice").fetch(1)
Я получаю свой ожидаемый набор результатов.Я думаю, что я передаю переменную user_name
если я ошибаюсь, пожалуйста, помогите мне исправить мой фрагмент кода.
Решение 2
Я думаю, у меня получилось, я пробовал использовать это,
p = models.UserDetails.gql('WHERE user_name = :uname', uname = user_name).fetch(1)
и я получил ожидаемый набор результатов.Интересно, почему в других форматах возникает проблема с подстановкой строк.
Другие советы
Вы пробовали filter('user_name = ', str(user_name))
?
Я полагаю, вы уверены, что имя_пользователя имеет ожидаемое содержимое.
Попробуйте войти в систему repr(user_name)
чтобы убедиться, что строка в точности совпадает с тем, что вы ожидаете (и что это не юникод, а не raw).Также попробуйте записать выражение в журнал user_name == "peter rice"
.Кроме этого, я не вижу никаких причин, по которым это не сработало бы - API буквально никак не может повлиять на это, поскольку он не знает, откуда берется аргумент, который вы передаете.