2009-09-07 16 views
6

En Python y GAE, me gustaría preguntar cómo obtener los parámetros de una cadena de consulta en la url. Como sé, la parte query_string devuelve toda la parte después del "?" en la url. Entonces, lo que tengo que hacer es dividir la cadena de consulta con "&" y usar las variables. ¿Hay alguna otra forma conveniente de administrar la cadena de consulta? ¿Cómo lo haces normalmente?Google App Engine - Solicitud de clase query_string

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

Haciendo de esta manera, en el caso, el query_string no tiene ningún valor, que arrojó un error:

IndexError: list index out of range 

Respuesta

18

No es necesario complicar. Puede recuperar todos los parámetros GET con:

self.request.get('var_name') 

O si desea recuperar todos ellos en una lista que puede utilizar:

self.request.get_all() 

Puede encontrar más información sobre la clase de solicitud here.

+0

Gracias rogerio, ¡funciona! –

+4

self.request.get_all() en realidad no funciona sin un parámetro; no devuelve todas las variables de consulta, simplemente devuelve todos los valores de una variable en particular. Para obtener la lista completa, debe usar self.request.arguments(). – apenwarr

+1

Como @apenwarr dice, esto ya no es una respuesta válida: 'get_all' necesita un nombre de parámetro para obtener todos los valores de – marianosimone

0

Si desea iterar sobre todos los parámetros de su solicitud, usted debe hacer algo como esto:

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

O, usted podría construir su propia dict que contiene todos los datos:

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