2012-08-02 9 views
214

क्वेरी स्ट्रिंग कैसे प्राप्त करें पर फ्लास्क डॉक्यूमेंटेशन से स्पष्ट नहीं है। मैं नया हूं, दस्तावेज़ों को देखा, नहीं मिला!आप फ्लास्क पर क्वेरी स्ट्रिंग कैसे प्राप्त करते हैं?

तो

@app.route('/') 
@app.route('/data') 
def data(): 
    query_string=?????? 
    return render_template("data.html") 
+9

यह क्विकस्टार्ट के तहत प्रलेखन में है: http://flask.pocoo.org/docs/quickstart/#the-request-object – Jarus

उत्तर

407
from flask import request 

@app.route('/data') 
def data(): 
    # here we want to get the value of user (i.e. ?user=some-value) 
    user = request.args.get('user') 
+33

यह उदाहरण क्वेरी स्ट्रिंग में पारित "उपयोगकर्ता" पैरामीटर का मान देता है, न कि प्रश्न स्ट्रिंग स्वयं। "क्वेरी स्ट्रिंग" का अर्थ प्रश्न चिह्न के बाद और पाउंड साइन से पहले सब कुछ है, यदि कोई मौजूद है। –

+18

अभी भी एक उपयोगी उत्तर है कि यह सवाल से संबंधित है। तो वैध और +1 – Necronet

+1

यदि उपयोगकर्ता मौजूद नहीं है तो क्या यह अपवाद उठाएगा? (मुझे नहीं लगता कि अगर तर्क सिर्फ एक नियम है।) –

152

पूर्ण URL request.url के रूप में उपलब्ध है, और क्वेरी स्ट्रिंग request.query_string के रूप में उपलब्ध है।

from flask import request 

@app.route('/adhoc_test/') 
def adhoc_test(): 

    return request.query_string 

एक व्यक्ति में जाना जाता है परम क्वेरी स्ट्रिंग में पारित कर दिया पहुँचने के लिए आपको request.args.get('param') उपयोग कर सकते हैं:

यहाँ एक उदाहरण है। जहां तक ​​मुझे पता है, यह करने का यह "सही" तरीका है।

ईटीए: आगे जाने से पहले, आपको खुद से पूछना चाहिए कि आप क्वेरी स्ट्रिंग क्यों चाहते हैं। मुझे कभी कच्ची स्ट्रिंग में खींचना नहीं पड़ा - फ्लास्क में एक सारणी तरीके से इसे एक्सेस करने के लिए तंत्र हैं। आपको उन लोगों का उपयोग करना चाहिए जब तक कि आपके पास कोई अनिवार्य कारण न हो।

+2

पठनीयता के लिए आप 'का उपयोग कर सकते हैं।'[4] ' – jfs

+0

की बजाय क्वेरी' वास्तव में - मुझे वास्तव में अगली बार spec पढ़ना चाहिए :) –

+0

वास्तविक दाएं उत्तर के लिए http://stackoverflow.com/a/11792690 – jfs

11

वेर्कज़ुग/फ्लास्क जैसा कि आपके लिए पहले से ही सब कुछ पार्स किया गया है। urlparse के साथ फिर से एक ही काम करते हैं कोई ज़रूरत नहीं करने के लिए:

from flask import request 

@app.route('/') 
@app.route('/data') 
def data(): 
    query_string = request.query_string ## There is it 
    return render_template("data.html") 

अनुरोध और प्रतिक्रिया वस्तुओं के लिए पूर्ण प्रलेखन WERKZEUG में है: http://werkzeug.pocoo.org/docs/wrappers/

10

हम request.query_string का उपयोग करके ऐसा कर सकते हैं।

उदाहरण:

चलें पर विचार view.py

from my_script import get_url_params 

@app.route('/web_url/', methods=('get', 'post')) 
def get_url_params_index(): 
    return Response(get_url_params()) 

आप भी इसे अधिक मॉड्यूलर बोतल ब्लूप्रिंट का उपयोग करके बनाने - http://flask.pocoo.org/docs/0.10/blueprints/

चलें पर विचार पहला नाम क्वेरी के एक भाग के रूप में पारित किया जा रहा है स्ट्रिंग /web_url /? first_name = john

## here is my_script.py 

## import required flask packages 
from flask import request 
def get_url_params(): 
    ## you might further need to format the URL params through escape.  
    firstName = request.args.get('first_name') 
    return firstName 

जैसा कि आप देखते हैं कि यह एक छोटा सा उदाहरण है - आप कई मान प्राप्त कर सकते हैं + उन्हें फॉर्मेट करें और इसका इस्तेमाल करें या इसे टेम्पलेट फ़ाइल पर पास कर दें।