2009-09-07 16 views
6

W Pythonie i GAE, chciałbym zapytać, jak uzyskać parametry ciągu zapytania w url. Jak wiem, część query_string zwraca całą część po znaku "?" w adresie URL. To, co muszę zrobić, to podzielić ciąg zapytania na "&" i użyć zmiennych. Czy istnieje inny wygodny sposób zarządzania ciągiem zapytania? Jak zwykle to robisz?Google App Engine - klasa zapytania query_string

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

Robi w ten sposób, w przypadku query_string nie ma żadnych wartości, to wyrzucił błąd:

IndexError: list index out of range 

Odpowiedz

18

Nie trzeba komplikować. Możesz pobrać wszystkie parametry GET z:

self.request.get('var_name') 

Lub jeśli chcesz pobrać je wszystkie w jednym liście można użyć:

self.request.get_all() 

można znaleźć więcej informacji na temat klasy żądanie here.

+0

Dziękuję Rogerio, to działa! –

+4

self.request.get_all() faktycznie nie działa bez parametru; nie zwraca wszystkich zmiennych zapytania, po prostu zwraca wszystkie wartości konkretnej zmiennej. Aby uzyskać pełną listę, musisz użyć self.request.arguments(). – apenwarr

+1

Jak mówi @apenwarr, nie jest to już poprawna odpowiedź: 'get_all' potrzebuje nazwy parametru, aby uzyskać wszystkie wartości dla – marianosimone

0

Jeśli chcesz iteracyjne nad wszystkimi parametrami żądanie, należy zrobić tak:

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

Albo, można zbudować własny dict zawierający wszystkie dane:

params = {arg: self.request.get_all(arg) for arg in self.request.arguments()}