Tidak jelas dari dokumentasi labu tentang cara mendapatkan string kueri. Saya baru, melihat dokumen, tidak dapat menemukan!
Begitu
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
Tidak jelas dari dokumentasi labu tentang cara mendapatkan string kueri. Saya baru, melihat dokumen, tidak dapat menemukan!
Begitu
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
Jawaban:
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 lengkap tersedia sebagai request.url
, dan string kueri tersedia sebagai request.query_string
.
Ini sebuah contoh:
from flask import request
@app.route('/adhoc_test/')
def adhoc_test():
return request.query_string
Untuk mengakses param yang dikenal secara individual yang dilewatkan dalam string kueri, Anda dapat menggunakan request.args.get('param')
. Ini adalah cara yang "benar" untuk melakukannya, sejauh yang saya tahu.
ETA: Sebelum melangkah lebih jauh, Anda harus bertanya pada diri sendiri mengapa Anda menginginkan string kueri. Saya tidak pernah harus menarik string mentah - Flask memiliki mekanisme untuk mengaksesnya secara abstrak. Anda harus menggunakannya kecuali Anda memiliki alasan kuat untuk tidak melakukannya.
Werkzeug / Labu karena sudah diuraikan segalanya untuk Anda. Tidak perlu melakukan pekerjaan yang sama lagi dengan 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")
Dokumentasi lengkap untuk objek permintaan dan respons ada di Werkzeug: http://werkzeug.pocoo.org/docs/wrappers/
Kita dapat melakukan ini dengan menggunakan request.query_string.
Contoh:
Mari kita pertimbangkan 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())
Anda juga membuatnya lebih modular dengan menggunakan Flask Blueprints - http://flask.pocoo.org/docs/0.10/blueprints/
Mari kita pertimbangkan nama depan diteruskan sebagai bagian dari string kueri / 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
Seperti yang Anda lihat, ini hanyalah contoh kecil - Anda dapat mengambil beberapa nilai + memformatnya dan menggunakannya atau meneruskannya ke file templat.
Saya datang ke sini mencari string kueri, bukan cara mendapatkan nilai dari string kueri.
request.query_string
mengembalikan parameter URL sebagai string byte mentah (Ref 1).
Contoh menggunakan 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)
Keluaran:
Referensi:
Coba seperti ini untuk string kueri:
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)
Setiap bentuk string kueri yang diambil dari objek permintaan labu seperti yang dijelaskan dalam O'Reilly Flask Web Devleopment :
Dari O'Reilly Flask Web Development , dan seperti yang dinyatakan oleh Manan Gouhari sebelumnya, pertama-tama Anda harus mengimpor permintaan:
from flask import request
request
adalah objek yang diekspos oleh Flask sebagai variabel konteks bernama (Anda dapat menebaknya) request
. Seperti namanya, ini berisi semua informasi yang dimasukkan klien dalam permintaan HTTP. Objek ini memiliki banyak atribut dan metode yang masing-masing dapat Anda ambil dan panggil.
Anda memiliki beberapa request
atribut yang berisi string kueri untuk dipilih. Di sini saya akan membuat daftar setiap atribut yang berisi string kueri apa pun, serta deskripsi dari buku O'Reilly atribut itu.
Pertama ada args
yang merupakan "kamus dengan semua argumen yang diteruskan dalam string kueri URL." Jadi jika Anda ingin string kueri diuraikan ke dalam kamus, Anda akan melakukan sesuatu seperti ini:
from flask import request
@app.route('/'):
queryStringDict = request.args
(Seperti yang ditunjukkan orang lain, Anda juga dapat menggunakan .get('<arg_name>')
untuk mendapatkan nilai tertentu dari kamus)
Kemudian, ada form
atribut, yang tidak tidak mengandung string, tetapi yang termasuk dalam bagian dari atribut lain yang tidak termasuk string yang saya akan daftar sejenak. Namun, yang pertama form
adalah "Kamus dengan semua bidang formulir yang dikirimkan bersama permintaan." Saya mengatakan itu untuk mengatakan ini: ada atribut kamus lain yang tersedia di objek permintaan termos disebut values
. values
adalah "Kamus yang menggabungkan nilai dalam form
dan args
." Mengambil yang akan terlihat seperti ini:
from flask import request
@app.route('/'):
formFieldsAndQueryStringDict = request.values
(Sekali lagi, gunakan .get('<arg_name>')
untuk mengeluarkan item tertentu dari kamus)
Opsi lain query_string
adalah "Bagian string kueri URL, sebagai nilai biner mentah." Contohnya:
from flask import request
@app.route('/'):
queryStringRaw = request.query_string
Kemudian sebagai bonus tambahan ada full_path
yang "Bagian dan string string bagian dari URL." Por ejemplo:
from flask import request
@app.route('/'):
pathWithQueryString = request.full_path
Dan akhirnya,, url
"URL lengkap yang diminta oleh klien" (yang termasuk string kueri):
from flask import request
@app.route('/'):
pathWithQueryString = request.url
Selamat melakukan peretasan :)
Ini bisa dilakukan menggunakan request.args.get()
. Misalnya jika string kueri Anda memiliki bidang date
, itu dapat diakses menggunakan
date = request.args.get('date')
Jangan lupa menambahkan " request
" ke daftar impor dari labu, mis
from flask import request
request.args.get()
; jawaban baru untuk pertanyaan lama harus berisi sesuatu yang tidak disebutkan sebelumnya.
Jika ada permintaan jika GET dan kami melewati beberapa parameter kueri,
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)