Google App Engine — класс запросов query_string

В Python и GAE я хотел бы спросить, как получить параметры строки запроса в URL-адресе. Насколько я знаю, часть query_string возвращает всю часть после "?" в URL. Итак, что мне нужно сделать, это разделить строку запроса с помощью «&» и использовать переменные. Есть ли другой удобный способ управлять строкой запроса? Как вы обычно это делаете?

str_query = self.request.query_string
m = str_query.split('&')
a = m[0] 
b = m[1]
c = m[2]

Таким образом, в случае, если query_string не имеет никаких значений, выдается ошибка:

IndexError: list index out of range

person Hoang Pham    schedule 07.09.2009    source источник


Ответы (2)


Не нужно усложнять. Вы можете получить все параметры GET с помощью:

self.request.get('var_name')

Или, если вы хотите получить их все в одном списке, вы можете использовать:

self.request.get_all()

Дополнительную информацию о классе Request можно найти здесь.

person rogeriopvl    schedule 07.09.2009
comment
self.request.get_all() на самом деле не работает без параметра; он не возвращает все переменные запроса, он просто возвращает все значения определенной переменной. Для получения полного списка вам нужно использовать self.request.arguments(). - person apenwarr; 08.03.2012
comment
Как говорит @apenwarr, это больше не правильный ответ: get_all нужно имя параметра, чтобы получить все значения для - person marianosimone; 08.03.2015

Если вы хотите перебрать все параметры вашего запроса, вы должны сделать что-то вроде этого:

for argument in self.request.arguments():
    values = self.request.get_all(argument)
    # do something with values (which is a list)

Или вы можете создать свой собственный dict, содержащий все данные:

params = {arg: self.request.get_all(arg) for arg in self.request.arguments()}
person marianosimone    schedule 27.02.2015