HTML のテキスト ボックスから何かを取得し、それをフラスコに入れ、そのデータを Python で解析する方法があるかどうか疑問に思っていました。これにはJSが関係しているのではないかと思っていましたが、間違っている可能性があります。何か案は?
5 に答える
もっと複雑なことをしたいのでない限り、HTML フォームから Flask へのデータのフィードは非常に簡単です。
- POST リクエストを受け入れるビューを作成します (
my_form_post
)。 - ディクショナリ内のフォーム要素にアクセスし
request.form
ます。
templates/my-form.html
:
<form method="POST">
<input name="text">
<input type="submit">
</form>
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/')
def my_form():
return render_template('my-form.html')
@app.route('/', methods=['POST'])
def my_form_post():
text = request.form['text']
processed_text = text.upper()
return processed_text
これは、リクエスト データへのアクセスに関する Flask ドキュメントです。
検証が必要なより複雑なフォームが必要な場合は、WTFormsと、それらを Flask と統合する方法を参照してください。
注: 他に制限がない限り、データを送信するのに JavaScriptはまったく必要ありません(ただし、使用することはできます)。
POST 入力タイプを受け入れるように Flask エンドポイントを宣言してから、必要な手順を実行します。jQuery を使用してデータを投稿します。
from flask import request
@app.route('/parse_data', methods=['GET', 'POST'])
def parse_data(data):
if request.method == "POST":
#perform action here
var value = $('.textbox').val();
$.ajax({
type: 'POST',
url: "{{ url_for('parse_data') }}",
data: JSON.stringify(value),
contentType: 'application/json',
success: function(data){
// do something with the received data
}
});
サーバー (フラスコ アプリ) とクライアント (ブラウザー) の間のすべての対話は、要求と応答によって行われます。ユーザーがボタンを押してフォームを送信すると、ブラウザはこのフォームを使用してリクエストをサーバー (フラスコアプリ) に送信し、次のようなフォームのコンテンツを取得できます。
request.args.get('form_name')
URL に応答するビューを作成する方法を既に知っていると仮定Flask
して、データを読み取るビューを作成しrequest.post
ます。input box
この投稿データにを追加するには、ページにテキスト ボックスを含むフォームを作成します。その後、使用jquery
して行うことができます
var data = $('#<form-id>').serialize()
次に、以下のようなものを使用して非同期にビューに投稿します。
$.post('<your view url>', function(data) {
$('.result').html(data);
});