web-dev-qa-db-ja.com

Flask request.get_json()は、有効なjsonデータが送信リクエストを介して送信されたときにNoneを返します

フラスコを使用してアプリを構築します。アプリはテーブル構造を使用してデータを表示します。その機能の一部は、ユーザーが指定したテーブル行からデータを収集することです。これを行うために、いくつかのjsを実行するボタンを各行に配置しました。 jsは行から情報を収集し、JSON.stringify()を使用してjsonオブジェクトに変換し、関連するflask urlへの投稿要求を発行します。

Json化されたオブジェクトの値をjsファイルからブラウザーコンソールに記録すると、正しく形成されていることがわかります。ポストリクエストは正しいルートにアクセスしますが、request.get_json()関数はそのルートのメソッドで値Noneを返します。

テスト用にflaskで個別のルートを設定しました。関連するコードは次のとおりです

javaScriptから

    function do_some_work(e) {
        var row_data = get_table_row_data(e);
        row_data = JSON.stringify(row_data);
        console.log(row_data);
        $.post("test", row_data);
    }

get_table_row_data()は、単にキーと値のペアを持つオブジェクトを返します。ログは、データが正しくフォーマットされたJSONであることを示しています。

そして、ここにpythonコード

#TODO
@application.route('/test', methods=['GET', 'POST'])
def test():
    data = request.get_json()
    print("data is "+format(data))
    return redirect(url_for('index'))

ここで、データはNoneとして表示されます

助けていただければ幸いです

6
0_insomniac_0

_request.json_で、JSONデータの辞書を返します。値を取得するには、request.json.get('value_name')を使用します。あなたのルートはこのようになります

_#TODO
@application.route('/test', methods=['GET', 'POST'])
def test():
    data = request.json
    print("data is " + format(data))
    return redirect(url_for('index'))
_
2
Marvin