web-dev-qa-db-ja.com

Flaskでフォームデータを取得する方法は?

フォームからデータを取得する必要があります。

JavaScriptを使用してフォームを作成します。

<script>   
function checkAuth() {
                var user = ADAL.getCachedUser();
                if (user) {
                    var form = $('<form style="position: absolute; width: 0; height: 0; opacity: 0; display: none; visibility: hidden;" method="POST" action= "{{ url_for("general.Microsoft") }}">');

                    form.append('<input type="hidden" name="token" value="' + ADAL.getCachedToken(ADAL.config.clientId) + '">');
                    form.append('<input type="hidden" name="json" value="' + encodeURIComponent(JSON.stringify(user)) + '">');
                    $("body").append(form);
                    form.submit();
                }
            }
</script> 

次に、入力フィールドからデータを取得する必要がありますname="json"

これが私のビュー関数です:

@general.route("/Microsoft/", methods=["GET", "POST"])
@csrf.exempt
def Microsoft():
    form = cgi.FieldStorage()
    name = form['json'].value
    return name

しかし、エラーが発生します:

builtins.KeyError KeyError: 'json'

フォームからデータを取得するのを手伝ってください。

5
user7378646

Flaskのリクエストオブジェクトからフォームデータを取得します。

from flask import Flask, request
app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    data = request.form['input_name']
    ...

次のように、デフォルト値を設定して400エラーを回避することもできます。

from flask import Flask, request
app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    default_name = '0'
    data = request.form.get('input_name', default_name)
    ...
26
Grey Li