2009-09-07 3 views
6

In Python und GAE möchte ich fragen, wie man die Parameter einer Abfrage-Zeichenfolge in der URL erhalten. Wie ich weiß, gibt der query_string Teil den ganzen Teil nach dem "?" in der URL. Also, was ich tun muss, ist die Abfrage Zeichenfolge mit "&" zu teilen, und verwenden Sie die Variablen. Gibt es andere bequeme Möglichkeit, die Abfragezeichenfolge zu verwalten? Wie machst du das normalerweise?Google App Engine - Anfrage Klasse query_string

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

Auf diese Weise, falls die query_string keine Werte hat, warf er einen Fehler:

IndexError: list index out of range 

Antwort

18

Sie brauchen nicht zu erschweren. Sie können alle GET-Parameter mit abrufen:

self.request.get('var_name') 

Oder wenn man sie alle in einer Liste abrufen möchten, können Sie verwenden:

self.request.get_all() 

Sie können weitere Informationen über den Antrag Klasse here finden.

+0

Danke Rogerio, es funktioniert! –

+4

self.request.get_all() funktioniert eigentlich nicht ohne Parameter; Es gibt nicht alle Abfragevariablen zurück, es gibt nur alle Werte einer bestimmten Variablen zurück. Für die vollständige Liste müssen Sie self.request.arguments() verwenden. – apenwarr

+1

Wie @apenwarr sagt, ist dies keine gültige Antwort mehr: 'get_all' benötigt einen Parameternamen, um alle Werte zu erhalten – marianosimone

0

Wenn Sie über alle Parameter Ihrer Anfrage wiederholen wollen, sollten Sie etwas tun:

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

Oder könnten Sie Ihre eigene dict enthält alle Daten, bauen:

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