ไม่ชัดเจนจากเอกสารขวดเกี่ยวกับวิธีรับสตริงแบบสอบถาม ฉันใหม่มองไปที่เอกสารไม่พบ!
ดังนั้น
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
ไม่ชัดเจนจากเอกสารขวดเกี่ยวกับวิธีรับสตริงแบบสอบถาม ฉันใหม่มองไปที่เอกสารไม่พบ!
ดังนั้น
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
คำตอบ:
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')
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')
ในการเข้าถึงพารามิเตอร์ที่รู้จักกันของแต่ละบุคคลผ่านในสตริงแบบสอบถามคุณสามารถใช้นี่คือวิธีที่ "ถูกต้อง" ที่จะทำเท่าที่ฉันรู้
การทางพิเศษแห่งประเทศไทย: ก่อนที่จะไปต่อคุณควรถามตัวเองว่าทำไมคุณต้องการสตริงแบบสอบถาม ฉันไม่เคยต้องดึงสตริงดิบ - ขวดมีกลไกสำหรับการเข้าถึงในลักษณะที่เป็นนามธรรม คุณควรใช้สิ่งเหล่านั้นหากคุณไม่มีเหตุผลที่น่าสนใจ
Werkzeug / Flask แยกวิเคราะห์ทุกอย่างให้คุณแล้ว ไม่จำเป็นต้องทำงานเดียวกันอีกครั้งด้วย 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/
เราสามารถทำได้โดยใช้ 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())
คุณยังทำให้มันเป็นโมดูลเพิ่มเติมโดยใช้ Flask Blueprints - 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
ตามที่คุณเห็นนี่เป็นเพียงตัวอย่างเล็ก ๆ - คุณสามารถดึงค่าหลายค่า + จัดรูปแบบเหล่านั้นและใช้หรือส่งต่อไปยังไฟล์เทมเพลต
ฉันมาที่นี่เพื่อค้นหาสตริงการสืบค้นไม่ใช่วิธีรับค่าจากสตริงการสืบค้น
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)
เอาท์พุท:
อ้างอิง:
ลองแบบนี้เพื่อค้นหาข้อความ:
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)
ทุกรูปแบบของสตริงการสืบค้นที่ดึงได้จากวัตถุที่ร้องขอขวดที่อธิบายไว้ในการพัฒนาเว็บของ O'Reilly Flask :
จากการพัฒนาเว็บของ O'Reilly Flaskและตามที่ระบุไว้โดย Manan Gouhari ก่อนหน้านี้ก่อนอื่นคุณต้องนำเข้าคำขอ:
from flask import request
request
เป็นวัตถุที่เปิดเผยโดยขวดเป็นตัวแปรบริบทชื่อ (คุณ guessed request
มัน) ตามชื่อแนะนำมันมีข้อมูลทั้งหมดที่ไคลเอ็นต์รวมอยู่ในคำขอ HTTP วัตถุนี้มีคุณสมบัติและวิธีการมากมายที่คุณสามารถดึงและโทรได้ตามลำดับ
คุณมีไม่กี่คน request
แอตทริบิวต์ที่มีสตริงข้อความค้นหาที่ให้เลือก ที่นี่ฉันจะแสดงรายการคุณลักษณะทุกอย่างที่มีอยู่ในสตริงแบบสอบถามตลอดจนคำอธิบายจากหนังสือ O'Reilly ของแอตทริบิวต์นั้น
สิ่งแรกargs
คือ "พจนานุกรมที่มีอาร์กิวเมนต์ทั้งหมดที่ส่งผ่านในสตริงการสืบค้นของ URL" ดังนั้นหากคุณต้องการแยกสตริงการสืบค้นในพจนานุกรมคุณจะทำสิ่งนี้:
from flask import request
@app.route('/'):
queryStringDict = request.args
(ตามที่คนอื่น ๆ ชี้คุณสามารถใช้.get('<arg_name>')
เพื่อรับค่าเฉพาะจากพจนานุกรม)
จากนั้นมีform
แอตทริบิวต์ซึ่งไม่ได้มีสตริงแบบสอบถาม แต่ซึ่งรวมอยู่ในส่วนหนึ่งของแอตทริบิวต์ที่ว่าคนอื่นไม่รวมถึงสตริงการสืบค้นที่ฉันจะแสดงชั่วขณะ อันดับแรกform
คือ "พจนานุกรมที่มีเขตข้อมูลฟอร์มทั้งหมดที่ส่งมาพร้อมกับคำขอ" ผมบอกว่าจะพูดแบบนี้: values
มีอีกแอตทริบิวต์พจนานุกรมที่มีอยู่ในวัตถุคำขอขวดที่เรียกว่า values
คือ "พจนานุกรมที่รวมค่าใน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" โดย ejemplo:
from flask import request
@app.route('/'):
pathWithQueryString = request.full_path
และสุดท้ายurl
"URL ทั้งหมดที่ลูกค้าร้องขอ" (ซึ่งรวมถึงสตริงข้อความค้นหา):
from flask import request
@app.route('/'):
pathWithQueryString = request.url
แฮ็คที่มีความสุข :)
request.args.get()
ซึ่งสามารถทำได้โดยใช้ ตัวอย่างเช่นถ้าสตริงแบบสอบถามของคุณมีเขตข้อมูลdate
ก็สามารถเข้าถึงได้โดยใช้
date = request.args.get('date')
อย่าลืมเพิ่ม " request
" ลงในรายการนำเข้าจากกระติกน้ำเช่น
from flask import request
request.args.get()
; คำตอบใหม่สำหรับคำถามเก่าควรมีสิ่งที่ไม่ได้กล่าวถึงมาก่อน
หากคำขอถ้า 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)