2009-09-07 10 views
6

In Python e GAE, vorrei chiedere come ottenere i parametri di una stringa di query nell'URL. Come noto, la parte query_string restituisce tutta la parte dopo "?" nell'URL. Quindi quello che devo fare è dividere la stringa di query con "&" e utilizzare le variabili. Esiste un altro modo conveniente per gestire la stringa di query? Come si fa normalmente?Google App Engine - Classe richiesta stringa_stringa

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

Facendo in questo modo, nel caso in cui, il query_string non ha valori, ha gettato un errore:

IndexError: list index out of range 

risposta

18

Non è necessario complicare. È possibile recuperare tutti i parametri GET con:

self.request.get('var_name') 

Oppure, se si desidera recuperare tutti in una sola lista si può usare:

self.request.get_all() 

Potete trovare maggiori informazioni sulla richiesta di classe here.

+0

Grazie rogerio, funziona! –

+4

self.request.get_all() in realtà non funziona senza un parametro; non restituisce tutte le variabili di query, restituisce solo tutti i valori di una particolare variabile. Per l'elenco completo è necessario utilizzare self.request.arguments(). – apenwarr

+1

Come dice @apenwarr, questa non è più una risposta valida: 'get_all' ha bisogno di un nome parametro per ottenere tutti i valori per – marianosimone

0

Se volete iterare tutti i parametri della vostra richiesta, si dovrebbe fare qualcosa di simile:

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

Oppure, si potrebbe costruire il proprio dict che contiene tutti i dati:

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