আপনি কীভাবে ফ্লাস্কে কোয়েরি স্ট্রিং পাবেন?


408

কীভাবে স্ট্রিংটি পাবেন সে সম্পর্কে ফ্লাস্ক ডকুমেন্টেশন থেকে স্পষ্ট নয়। আমি নতুন, ডক্সের দিকে তাকালাম, খুঁজে পেলাম না!

সুতরাং

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


তবে, এটি 'কোয়েরি স্ট্রিং' শব্দটি ব্যবহার করে না। এটি কেবল তাদেরকে পরামিতি বলে। > ইউআরএলে জমা দেওয়া প্যারামিটারগুলি অ্যাক্সেস করতে (? কী = মান) আপনি আরগস বৈশিষ্ট্যটি ব্যবহার করতে পারেন:>> অনুসন্ধানের শব্দ = অনুরোধ.আরজ.জেট ('কী', '')
আয়ন ফ্রিম্যান

উত্তর:


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 হিসাবে, আপনি কেবল কিছুই পাবেন না।
JPEG_

5
@ লিন্ডসিসিমন: ভাল দাগযুক্ত। তবে যেহেতু এই উত্তরটি আমার গুগল অনুসন্ধান পদগুলিতে ইঙ্গিত করা প্রশ্নের সঠিকভাবে উত্তর দিয়েছে ('ফ্লাস্ক অনুরোধের প্যারামিটার পান') আমি যেভাবেই আপ-ভোটিং করছি। আমিও একজন প্যাডেন্ট, কিন্তু আমি এটি ওয়েব রহস্যবাদের কাছে চালাচ্ছি। 😉
মাইকেল শ্যাপার 23

5
আমার পক্ষ থেকে কোন যুক্তি! এই প্রশ্নে আমার মন্তব্যগুলি SO পয়েন্ট এবং সামগ্রিক কর্মের একটি চলমান উত্স হয়েছে। :) শুভ হ্যাকিং!
ল্যান্ডসি সাইমন

237

সম্পূর্ণ ইউআরএল হিসাবে উপলব্ধ request.url, এবং ক্যোয়ারী স্ট্রিং হিসাবে উপলব্ধ request.query_string

এখানে একটি উদাহরণ:

from flask import request

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

    return request.query_string

ক্যোয়ারী স্ট্রিংয়ে পাস করা আলাদা আলাদা পরিচিত প্যারাম অ্যাক্সেস করতে আপনি ব্যবহার করতে পারেন request.args.get('param')। আমি এটি যতদূর জানি এটি এটি করার "সঠিক" উপায়।

ইটিএ: আপনি আরও যাওয়ার আগে আপনার নিজের জিজ্ঞাসা করা উচিত কেন আপনি কোয়েরি স্ট্রিং চান want আমাকে কখনই কাঁচা স্ট্রিংটি টানতে হয়নি - ফ্লাস্কের এটি বিমূর্তভাবে অ্যাক্সেস করার জন্য ব্যবস্থা রয়েছে। আপনার যদি না করার বাধ্যতামূলক কারণ না থাকে তবে আপনার সেগুলি ব্যবহার করা উচিত।


11
প্রকৃত সঠিক উত্তরের জন্য +1। OAuth প্রবাহ যেমন ড্রপবক্স নিয়মিতভাবে টোকেনগুলি পাস করার জন্য পুনর্নির্দেশের URL গুলি জিজ্ঞাসা করবে। এটি সঠিক ধারণা দেয় যে আপনি নিজেরাই ক্যোয়ারী স্ট্রিংটি বিশ্লেষণ করতে চান।
রিচার্ড লভেহেজার্ট

ভুল উত্তরের জন্য ভার্চুয়াল -1 😉 যদিও আক্ষরিক অর্থে সঠিক, এটি ওপি যা খুঁজছিল তা সরবরাহ করে না, যা গৃহীত উত্তর দেয়। ডিডব্লিউআইএম ​​এফটিডব্লিউ। এসও পয়েন্টের চৌম্বক হিসাবে ভাল খেলেছে।
ডেভ

15

ওয়ার্কজেগ / ফ্লাস্ক ইতিমধ্যে আপনার জন্য সমস্ত কিছু পার্স করা হয়েছে। 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")

অনুরোধ এবং প্রতিক্রিয়াযুক্ত সামগ্রীর সম্পূর্ণ ডকুমেন্টেশন হ'ল ওয়ার্কজেগ: http://werkzeug.pocoo.org/docs/wrappers/


14

আমরা অনুরোধ.কোয়ারি_ স্ট্রিং ব্যবহার করে এটি করতে পারি।

উদাহরণ:

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/

প্রথম নামটি ক্যোয়ারী স্ট্রিং / ওয়েব_উরাল /? প্রথম_নাম = জন এর অংশ হিসাবে পাস হচ্ছে তা বিবেচনা করা যাক

## 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 ইউআরএল প্যারামিটারগুলি কাঁচা বাইট স্ট্রিং হিসাবে প্রদান করে (রেফ 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. কোয়েরি_স্ট্রিংয়ে অফিসিয়াল এপিআই ডকুমেন্টেশন

1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি ওপি যে সন্ধান করছিল তার সঠিক সমাধান দেয়।
কনস্ট্ট

কিছুটা ভুল উত্তর দিয়ে +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

ও'রিলি ফ্লাস্ক ওয়েব ডিভিলোপমেন্টে বর্ণিত ফ্লেস্ক অনুরোধ অবজেক্ট থেকে ক্যোয়ারী স্ট্রিংয়ের প্রতিটি ফর্ম পুনরুদ্ধারযোগ্য :

ও'রিলি ফ্লাস্ক ওয়েব ডেভলপমেন্ট থেকে এবং মনন গৌহারি আগে যেমন বলেছিলেন, প্রথমে আপনাকে অনুরোধ আমদানি করতে হবে:

from flask import request

requestফ্ল্যাস্ক নামের একটি প্রসঙ্গ ভেরিয়েবল হিসাবে প্রকাশিত একটি বস্তু (আপনি এটি অনুমান করেছিলেন) request। এর নাম অনুসারে, এতে ক্লায়েন্টটি এইচটিটিপি অনুরোধে অন্তর্ভুক্ত থাকা সমস্ত তথ্য রয়েছে । এই অবজেক্টে অনেকগুলি বৈশিষ্ট্য এবং পদ্ধতি রয়েছে যা আপনি যথাক্রমে পুনরুদ্ধার করতে এবং কল করতে পারেন।

আপনার কাছে বেশ কয়েকটি requestবৈশিষ্ট্য রয়েছে যার মধ্যে কোয়েরি স্ট্রিং রয়েছে যা থেকে চয়ন করতে হবে। এখানে আমি যে কোনও উপায়ে কোয়েরি স্ট্রিং রয়েছে এমন প্রতিটি বৈশিষ্ট্য, সেইসাথে সেই বৈশিষ্ট্যের ও'রিলি বইয়ের একটি বিবরণ উল্লেখ করব।

প্রথমে রয়েছে argsযা "ইউআরএল এর ক্যোরি স্ট্রিংয়ে সমস্ত আর্গুমেন্টের সাথে পাস করা একটি অভিধান"। সুতরাং আপনি যদি কোয়েরি স্ট্রিংটিকে একটি অভিধানে বিভক্ত করতে চান তবে আপনি এরকম কিছু করতে চান:

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(); পুরানো প্রশ্নের নতুন উত্তরে এমন কিছু থাকা উচিত যা আগে উল্লেখ করা হয়নি।
lfurini

0

যদি অনুরোধটি জিইটি এবং আমরা যদি কিছু ক্যোয়ারী প্যারামিটারগুলি পাশ করে তবে,

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)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.