109

HTML のテキスト ボックスから何かを取得し、それをフラスコに入れ、そのデータを Python で解析する方法があるかどうか疑問に思っていました。これにはJSが関係しているのではないかと思っていましたが、間違っている可能性があります。何か案は?

4

5 に答える 5

190

もっと複雑なことをしたいのでない限り、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はまったく必要ありません(ただし、使用することはできます)。

于 2012-09-05T09:47:09.767 に答える
13

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
  }
});
于 2012-09-05T09:35:41.607 に答える
2

サーバー (フラスコ アプリ) とクライアント (ブラウザー) の間のすべての対話は、要求と応答によって行われます。ユーザーがボタンを押してフォームを送信すると、ブラウザはこのフォームを使用してリクエストをサーバー (フラスコアプリ) に送信し、次のようなフォームのコンテンツを取得できます。

request.args.get('form_name')
于 2012-09-05T09:29:01.647 に答える
1

URL に応答するビューを作成する方法を既に知っていると仮定Flaskして、データを読み取るビューを作成しrequest.postます。input boxこの投稿データにを追加するには、ページにテキスト ボックスを含むフォームを作成します。その後、使用jqueryして行うことができます

var data = $('#<form-id>').serialize()

次に、以下のようなものを使用して非同期にビューに投稿します。

$.post('<your view url>', function(data) {
  $('.result').html(data);
});
于 2012-09-05T09:26:07.337 に答える