Flask belgesinden sorgu dizesini nasıl alacağınız açık değil. Ben yeniyim, belgelere baktım, bulamadım!
Yani
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
Flask belgesinden sorgu dizesini nasıl alacağınız açık değil. Ben yeniyim, belgelere baktım, bulamadım!
Yani
@app.route('/')
@app.route('/data')
def data():
query_string=??????
return render_template("data.html")
Yanıtlar:
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')
Tam URL olarak request.url
ve sorgu dizesi olarak kullanılabilir request.query_string
.
İşte bir örnek:
from flask import request
@app.route('/adhoc_test/')
def adhoc_test():
return request.query_string
Sorgu dizesinde iletilen bilinen bir parametreye erişmek için kullanabilirsiniz request.args.get('param')
. Bildiğim kadarıyla bunu yapmanın "doğru" yolu.
ETA: Daha ileri gitmeden önce, kendinize neden sorgu dizesini istediğinizi sormalısınız. Ham dizeyi hiç çekmek zorunda kalmadım - Flask'ın soyutlanmış bir şekilde erişme mekanizmaları var. Zorlayıcı bir nedeniniz olmadıkça bunları kullanmalısınız.
Werkzeug / Flask zaten sizin için her şeyi ayrıştırdı. Aynı işi urlparse ile tekrar yapmaya gerek yok:
from flask import request
@app.route('/')
@app.route('/data')
def data():
query_string = request.query_string ## There is it
return render_template("data.html")
İstek ve yanıt nesneleriyle ilgili tüm belgeler Werkzeug'dadır: http://werkzeug.pocoo.org/docs/wrappers/
Bunu request.query_string kullanarak yapabiliriz.
Misal:
View.py'yi ele alalım
from my_script import get_url_params
@app.route('/web_url/', methods=('get', 'post'))
def get_url_params_index():
return Response(get_url_params())
Ayrıca Flask Blueprints kullanarak daha modüler hale getirebilirsiniz - http://flask.pocoo.org/docs/0.10/blueprints/
İlk adın / web_url /? First_name = john sorgusunun bir parçası olarak iletildiğini düşünelim.
## 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
Gördüğünüz gibi bu sadece küçük bir örnektir - birden fazla değer alabilir + bunları biçimlendirebilir ve kullanabilir veya şablon dosyasına aktarabilirsiniz.
Ben burada sorgu dizesinden değerleri almak için değil, sorgu dize arıyor geldi.
request.query_string
URL parametrelerini ham bayt dizesi (Ref 1) olarak döndürür.
Kullanım örneği 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)
Çıktı:
Referanslar:
Sorgu dizesi için şu şekilde deneyin:
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 Şişesi Web Geliştirme bölümünde açıklandığı gibi şişe istek nesnesinden alınabilen sorgu dizesinin her biçimi :
Gönderen O'Reilly Flask Web Geliştirme önceki Manan Gouhari belirttiği ve aynı öncelikle ithalat talebi gerekir:
from flask import request
request
Flask tarafından adlandırılan bir bağlam değişkeni olarak pozlanan bir nesnedir (tahmin ettiniz) request
. Adından da anlaşılacağı gibi, istemcinin HTTP isteğine dahil ettiği tüm bilgileri içerir . Bu nesnenin sırasıyla alabileceğiniz ve çağırabileceğiniz birçok özelliği ve yöntemi vardır.
request
Aralarından seçim yapabileceğiniz sorgu dizesini içeren oldukça az sayıda özelliğiniz var. Burada herhangi bir şekilde sorgu dizesini içeren her özniteliğin yanı sıra bu özniteliğin O'Reilly kitabından bir açıklama listeleyeceğim.
Birincisi args
, "URL'nin sorgu dizesinde iletilen tüm bağımsız değişkenleri içeren bir sözlük "tür. Dolayısıyla, sorgu dizesinin bir sözlüğe ayrıştırılmasını istiyorsanız, şöyle bir şey yaparsınız:
from flask import request
@app.route('/'):
queryStringDict = request.args
(Diğerlerinin işaret ettiği gibi .get('<arg_name>')
, sözlükten belirli bir değer elde etmek için de kullanabilirsiniz )
Sonra, orada form
yok niteliği, değil sorgu dizesini içerebilir, ancak hangi başka bir özelliğin parçası dahildir yapar ben anlık listeler sorgu dizesi içerir. Birincisi, form
"İstekle birlikte gönderilen tüm form alanlarını içeren bir sözlük." Bunu söylemek için söylüyorum: denilen şişe isteği nesnesinde kullanılabilir başka bir sözlük özelliği var values
. values
" form
ve içindeki değerleri birleştiren bir sözlüktür args
." Bunu almak şöyle görünecektir:
from flask import request
@app.route('/'):
formFieldsAndQueryStringDict = request.values
(Yine, .get('<arg_name>')
belirli bir öğeyi sözlükten çıkarmak için kullanın )
Başka bir seçenek de query_string
"URL'nin sorgu ikili kısmı olarak ham ikili değer" dir. Buna bir örnek:
from flask import request
@app.route('/'):
queryStringRaw = request.query_string
Sonra bir avantaj full_path
olarak "URL'nin yol ve sorgu dizesi bölümleri" vardır. Ejemplo tarafından:
from flask import request
@app.route('/'):
pathWithQueryString = request.full_path
Ve son olarak url
, "İstemci tarafından istenen tam URL" (sorgu dizesini içerir):
from flask import request
@app.route('/'):
pathWithQueryString = request.url
Mutlu kesmek :)
Bu kullanılarak yapılabilir request.args.get()
. Sorgu dizesi bir alan vardır Örneğin date
, bu kullanarak erişilebilir
date = request.args.get('date')
request
Şişeden yapılan ithalat listesine " " eklemeyi unutmayın.
from flask import request
request.args.get()
; eski sorulara verilen yeni yanıtlar daha önce bahsedilmeyen bir şey içermelidir.
Eğer istek alırsak ve bazı sorgu parametrelerini geçtikten sonra,
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)