फ्लास्क पर आपको क्वेरी स्ट्रिंग कैसे मिलती है?


408

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

इसलिए

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

11
: यह त्वरित प्रारंभ के तहत दस्तावेज में है flask.pocoo.org/docs/quickstart/#the-request-object
Jarus

लेकिन, यह 'क्वेरी स्ट्रिंग' शब्द का उपयोग नहीं करता है। यह सिर्फ उन्हें पैरामीटर कहता है। > URL में सबमिट किए गए मापदंडों का उपयोग करने के लिए (? कुंजी = मूल्य) आप आर्ग्स विशेषता का उपयोग कर सकते हैं:> खोज = = request.args.get ('कुंजी', '')
आयन फ्रीमैन

जवाबों:


779
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')

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

45
अभी भी एक उपयोगी उत्तर है कि यह प्रश्न से संबंधित है। इतना मान्य और +1
नेक्रोनट

8
नहीं - एक तानाशाह और .get के साथ के रूप में, आपको बस कोई नहीं मिलेगा।
जेपीईजी_

5
@ लिंडीसीमोन: अच्छी तरह से देखा जाता है। लेकिन जब से यह उत्तर सही ढंग से मेरे Google खोज शब्दों ('फ्लास्क रिक्वेस्ट पैरामीटर') से जुड़ा हुआ है, का उत्तर देता है, मैं किसी भी तरह से मतदान कर रहा हूं। मैं एक पेडेंट भी हूं, लेकिन मैं इसे वेब रहस्यवाद तक समझ रहा हूं। 😉
माइकल Scheper

5
मुझसे कोई तर्क नहीं! इस सवाल पर मेरी टिप्पणी एसओ अंक और समग्र कर्म का एक निरंतर स्रोत रही है। :) हैप्पी हैकिंग!
लिंडसी साइमन

237

पूर्ण 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')। यह ऐसा करने का "सही" तरीका है, जहाँ तक मुझे पता है।

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


11
वास्तविक सही उत्तर के लिए +1। OAuth प्रवाह जैसे ड्रॉपबॉक्स नियमित रूप से टोकन को पास करने के लिए पुनर्निर्देशन URL मांगेगा। यह सही समझ में आता है कि आप क्वेरी स्ट्रिंग को स्वयं पार्स करना चाहते हैं।
रिचर्ड लोवजेरते

गलत उत्तर के लिए वर्चुअल -1 यद्यपि यह अक्षरशः सही है, यह प्रदान नहीं करता है कि ओपी क्या देख रहा था, जो स्वीकृत उत्तर देता है। DWIM FTW। हालांकि एसओ अंक चुंबक के रूप में अच्छी तरह से खेला जाता है।
22

15

Werkzeug / फ्लास्क के रूप में पहले से ही आप के लिए सब कुछ पार्स। 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/rappers/


14

हम 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/blueints/

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

## 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

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


11

मैं यहाँ क्वेरी स्ट्रिंग की तलाश में आया था, क्वेरी स्ट्रिंग से मान प्राप्त करने के तरीके के बारे में नहीं।

request.query_string कच्चे बाइट स्ट्रिंग के रूप में URL पैरामीटर लौटाता है (Ref 1)।

उपयोग करने का उदाहरण request.query_string:

from flask import Flask, request

app = Flask(__name__)

@app.route('/data', methods=['GET'])
def get_query_string():
    return request.query_string

if __name__ == '__main__':
    app.run(debug=True)

आउटपुट:

फ्लास्क मार्ग में क्वेरी पैरामीटर

संदर्भ:

  1. आधिकारिक API प्रलेखन query_string पर

1
यह स्वीकृत उत्तर होना चाहिए क्योंकि यह सटीक समाधान देता है जिसे ओपी देख रहा था।
const

कुछ हद तक गलत जवाब पर +600 के साथ लड़ना मुश्किल है।
मार्विन

4

क्वेरी स्ट्रिंग के लिए इस तरह आज़माएँ:

from flask import Flask, request

app = Flask(__name__)

@app.route('/parameters', methods=['GET'])
def query_strings():

    args1 = request.args['args1']
    args2 = request.args['args2']
    args3 = request.args['args3']

    return '''<h1>The Query String are...{}:{}:{}</h1>''' .format(args1,args2,args3)


if __name__ == '__main__':

    app.run(debug=True)

आउटपुट: यहां छवि विवरण दर्ज करें


request.args ['args1'] को request.args.get ('args1') के रूप में बेहतर लिखा जाता है
imbatman

1

O'Reilly फ्लास्क वेब डेवेलपमेंट में वर्णित फ्लास्क अनुरोध ऑब्जेक्ट से क्वेरी स्ट्रिंग के प्रत्येक रूप :

से ओ रेली बोतल वेब विकास , और जैसा कि पहले मानन Gouhari ने कहा, पहले आप आयात अनुरोध करने की जरूरत है:

from flask import request

requestफ्लास्क द्वारा एक संदर्भ चर नाम के रूप में उजागर की गई वस्तु है (आपने इसका अनुमान लगाया है) request। जैसा कि इसके नाम से पता चलता है, इसमें सभी शामिल हैं जानकारी है जो क्लाइंट HTTP अनुरोध में शामिल है। इस ऑब्जेक्ट में कई विशेषताएँ और विधियाँ हैं जिन्हें आप क्रमशः प्राप्त और कॉल कर सकते हैं।

आपके पास काफी कुछ है request विशेषताएँ हैं जिनमें क्वेरी स्ट्रिंग है जिसमें से चयन करना है। यहां मैं हर उस विशेषता को सूचीबद्ध करूंगा जिसमें किसी भी तरह से क्वेरी स्ट्रिंग, साथ ही उस विशेषता के ओ'रेली पुस्तक से विवरण शामिल है।

पहले वहाँ है argsजो "URL के क्वेरी स्ट्रिंग में पारित सभी तर्कों के साथ एक शब्दकोश है।" इसलिए यदि आप चाहते हैं कि क्वेरी स्ट्रिंग एक शब्दकोश में पार्स की जाए, तो आप कुछ इस तरह करेंगे:

from flask import request

@app.route('/'):
    queryStringDict = request.args

(जैसा कि अन्य ने बताया है, आप .get('<arg_name>')शब्दकोश से एक विशिष्ट मूल्य प्राप्त करने के लिए भी उपयोग कर सकते हैं )

फिर, वहाँ formविशेषता है, जो है नहीं क्वेरी स्ट्रिंग होते हैं, लेकिन जो एक और विशेषता है कि के हिस्से में शामिल किया गया है करता है क्वेरी स्ट्रिंग जो मैं क्षण भर को सूचीबद्ध करेगा शामिल हैं। सबसे पहले, हालांकि, form"अनुरोध के साथ सबमिट किए गए सभी फॉर्म फ़ील्ड के साथ एक शब्दकोश है।" मैं कहता हूं कि यह कहने के लिए: फ्लास्क अनुरोध ऑब्जेक्ट में एक और शब्दकोश विशेषता उपलब्ध है जिसे कहा जाता है valuesvaluesहै "एक शब्दकोश है कि जोड़ती मूल्यों में formऔर args।" पुनः प्राप्त करना कुछ इस तरह दिखाई देगा:

from flask import request

@app.route('/'):
    formFieldsAndQueryStringDict = request.values

(फिर से, .get('<arg_name>')शब्दकोश से एक विशिष्ट आइटम प्राप्त करने के लिए उपयोग करें)

एक अन्य विकल्प यह है query_stringकि "कच्चे बाइनरी मान के रूप में URL का क्वेरी स्ट्रिंग भाग।" उस का उदाहरण:

from flask import request

@app.route('/'):
    queryStringRaw = request.query_string

फिर एक अतिरिक्त बोनस के रूप full_pathमें "URL का पथ और क्वेरी स्ट्रिंग अंश" है। पोर एजम्प्लो:

from flask import request

@app.route('/'):
    pathWithQueryString = request.full_path

और अंत में url, "क्लाइंट द्वारा अनुरोधित पूरा URL" (जिसमें क्वेरी स्ट्रिंग शामिल है):

from flask import request

@app.route('/'):
    pathWithQueryString = request.url

हैप्पी हैकिंग :)


0

यह प्रयोग करके किया जा सकता है request.args.get()। उदाहरण के लिए यदि आपके क्वेरी स्ट्रिंग में कोई फ़ील्ड है date, तो इसका उपयोग करके पहुँचा जा सकता है

date = request.args.get('date')

requestफ्लास्क से आयात की सूची में " " जोड़ना न भूलें

from flask import request

जबकि आपका उत्तर तकनीकी रूप से सही है, पहले से ही अन्य उत्तर (पुराने और अधिक पूर्ण) उपयोग करने का सुझाव दे रहे हैं request.args.get(); पुराने प्रश्नों के नए उत्तर में कुछ ऐसा होना चाहिए जिसका पहले उल्लेख नहीं किया गया था।
लफुरिनी

0

अगर GET और हमने कुछ क्वेरी पैरामीटर पारित किए हैं तो अनुरोध

fro`enter code here`m flask import request
@app.route('/')
@app.route('/data')
def data():
   if request.method == 'GET':
      # Get the parameters by key
      arg1 = request.args.get('arg1')
      arg2 = request.args.get('arg2')
      # Generate the query string
      query_string="?arg1={0}&arg2={1}".format(arg1, arg2)
      return render_template("data.html", query_string=query_string)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.