Không rõ ràng từ tài liệu bình về cách lấy chuỗi truy vấn. Tôi là người mới, nhìn vào các tài liệu, không thể tìm thấy!
Vì thế
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
Không rõ ràng từ tài liệu bình về cách lấy chuỗi truy vấn. Tôi là người mới, nhìn vào các tài liệu, không thể tìm thấy!
Vì thế
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
Câu trả lời:
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 đầy đủ có sẵn dưới dạng request.url
và chuỗi truy vấn có sẵn dưới dạngrequest.query_string
.
Đây là một ví dụ:
from flask import request
@app.route('/adhoc_test/')
def adhoc_test():
return request.query_string
Để truy cập một param được biết đến thông qua chuỗi truy vấn, bạn có thể sử dụng request.args.get('param')
. Đây là cách "đúng" để làm điều đó, theo như tôi biết.
ETA: Trước khi bạn đi xa hơn, bạn nên tự hỏi tại sao bạn muốn chuỗi truy vấn. Tôi chưa bao giờ phải kéo theo chuỗi thô - Flask có các cơ chế để truy cập nó theo cách trừu tượng. Bạn nên sử dụng chúng trừ khi bạn không có lý do thuyết phục.
Werkzeug / Flask như đã phân tích mọi thứ cho bạn. Không cần phải thực hiện lại công việc tương tự với 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")
Tài liệu đầy đủ cho các đối tượng yêu cầu và phản hồi có trong Werkzeug: http://werkzeug.pocoo.org/docs/wrappers/
Chúng tôi có thể làm điều này bằng cách sử dụng request.query_opes.
Thí dụ:
Hãy xem xét 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())
Bạn cũng làm cho nó trở nên mô đun hơn bằng cách sử dụng Flask Blueprints - http://flask.pocoo.org/docs/0.10/blueprints/
Hãy xem xét tên đầu tiên được thông qua như một phần của chuỗi truy vấn / 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
Như bạn thấy đây chỉ là một ví dụ nhỏ - bạn có thể tìm nạp nhiều giá trị + tạo thành các giá trị đó và sử dụng nó hoặc chuyển nó vào tệp mẫu.
Tôi đến đây để tìm chuỗi truy vấn, không phải làm thế nào để lấy giá trị từ chuỗi truy vấn.
request.query_string
trả về các tham số URL dưới dạng chuỗi byte thô (Ref 1).
Ví dụ về việc sử dụng 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)
Đầu ra:
Người giới thiệu:
Hãy thử như thế này cho chuỗi truy vấn:
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)
Mọi dạng của chuỗi truy vấn có thể truy xuất được từ đối tượng yêu cầu bình như được mô tả trong O'Reilly Flask Web Devleopment :
Từ Phát triển Web O'Reilly Flask và như Manan Gouhari đã nêu trước đó, trước tiên bạn cần nhập yêu cầu:
from flask import request
request
là một đối tượng được Flask trưng ra dưới dạng một biến bối cảnh có tên (bạn đoán nó) request
. Như tên của nó cho thấy, nó chứa tất cả thông tin mà máy khách đưa vào yêu cầu HTTP. Đối tượng này có nhiều thuộc tính và phương thức mà bạn có thể truy xuất và gọi tương ứng.
Bạn có khá nhiều request
thuộc tính chứa chuỗi truy vấn để chọn. Ở đây tôi sẽ liệt kê mọi thuộc tính có chứa trong bất kỳ cách nào chuỗi truy vấn, cũng như mô tả từ sách O'Reilly của thuộc tính đó.
Đầu tiên, args
đó là "một từ điển với tất cả các đối số được truyền trong chuỗi truy vấn của URL." Vì vậy, nếu bạn muốn chuỗi truy vấn được phân tích cú pháp vào từ điển, bạn sẽ làm một cái gì đó như thế này:
from flask import request
@app.route('/'):
queryStringDict = request.args
(Như những người khác đã chỉ ra, bạn cũng có thể sử dụng .get('<arg_name>')
để có được một giá trị cụ thể từ từ điển)
Sau đó, có các form
thuộc tính, mà không chứa các chuỗi truy vấn, nhưng được bao gồm trong một phần của một thuộc tính mà không bao gồm các chuỗi truy vấn mà tôi sẽ liệt kê trong giây lát. Tuy nhiên, trước tiên, form
là "Một từ điển với tất cả các trường mẫu được gửi cùng với yêu cầu." Tôi nói điều đó để nói điều này: có một thuộc tính từ điển khác có sẵn trong đối tượng yêu cầu bình được gọi values
. values
là "Một từ điển kết hợp các giá trị trong form
và args
." Lấy ra sẽ trông giống như thế này:
from flask import request
@app.route('/'):
formFieldsAndQueryStringDict = request.values
(Một lần nữa, sử dụng .get('<arg_name>')
để lấy một mục cụ thể ra khỏi từ điển)
Một tùy chọn khác query_string
là "Phần chuỗi truy vấn của URL, dưới dạng giá trị nhị phân thô". Ví dụ về điều đó:
from flask import request
@app.route('/'):
queryStringRaw = request.query_string
Sau đó, như một phần thưởng bổ sung full_path
, đó là "Phần đường dẫn và chuỗi truy vấn của URL." Por ejemplo:
from flask import request
@app.route('/'):
pathWithQueryString = request.full_path
Và cuối cùng, url
"URL hoàn chỉnh do khách hàng yêu cầu" (bao gồm chuỗi truy vấn):
from flask import request
@app.route('/'):
pathWithQueryString = request.url
Chúc mừng hack :)
Điều này có thể được thực hiện bằng cách sử dụng request.args.get()
. Ví dụ: nếu chuỗi truy vấn của bạn có một trường date
, nó có thể được truy cập bằng cách sử dụng
date = request.args.get('date')
Đừng quên thêm " request
" vào danh sách nhập khẩu từ bình, nghĩa là
from flask import request
request.args.get()
; câu trả lời mới cho câu hỏi cũ nên chứa một cái gì đó không được đề cập trước đó.
Nếu yêu cầu nếu GET và chúng tôi đã chuyển một số tham số truy vấn thì,
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)