2009-09-07 3 views
6

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

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 

ответ

18

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

self.request.get('var_name') 

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

self.request.get_all() 

Вы можете найти более подробную информацию о классе Request here.

+0

Спасибо, rogerio, это работает! –

+4

self.request.get_all() фактически не работает без параметра; он не возвращает все переменные запроса, он просто возвращает все значения конкретной переменной. Для полного списка вам необходимо использовать self.request.arguments(). – apenwarr

+1

Как говорит @apenwarr, это уже не правильный ответ: 'get_all' нуждается в имени параметра, чтобы получить все значения для – marianosimone

0

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

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()}