2009-09-07 11 views
6

पायथन और जीएई में, मैं पूछना चाहता हूं कि यूआरएल में क्वेरी स्ट्रिंग के पैरामीटर कैसे प्राप्त करें। जैसा कि मुझे पता है, query_string भाग "?" के बाद सभी भाग देता है यूआरएल में तो मुझे "स्ट्रिंग स्ट्रिंग को" & "के साथ विभाजित करना है, और चर का उपयोग करना है। क्या क्वेरी स्ट्रिंग को प्रबंधित करने के लिए कोई अन्य ठोस तरीका है? आप इसे सामान्य रूप से कैसे करते हैं?Google ऐप इंजन - अनुरोध क्लास query_string

IndexError: list index out of range 

उत्तर

18

आप को मुश्किल की जरूरत नहीं है:

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

इस तरह से कर रहा, इस मामले में, QUERY_STRING कोई भी मान नहीं है, यह एक त्रुटि फेंक दिया। आप के साथ सभी GET पैरामीटर प्राप्त कर सकते हैं:

self.request.get('var_name') 

या आप उपयोग कर सकते हैं यदि आप उन सभी को एक सूची में प्राप्त करना चाहते हैं:

self.request.get_all() 

आप अनुरोध वर्ग 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()}