web-dev-qa-db-fra.com

Flask request.get_json () renvoyant None lorsque des données json valides sont envoyées via la post-demande

Création d'une application à l'aide d'un flacon. L'application utilise une structure de tableau pour afficher les données. Une partie de ses fonctionnalités consiste à collecter les données à partir des lignes de table spécifiées par l'utilisateur. Pour ce faire, j'ai placé un bouton sur chaque ligne qui exécute certains js. Le js collecte les informations de la ligne, utilise JSON.stringify () pour convertir en objet json et émet la demande de publication vers l'url appropriée flask).

La journalisation de la valeur de l'objet jsonified sur la console du navigateur à partir du fichier js montre qu'il est correctement formé. La post-demande contacte la route correcte mais la fonction request.get_json () renvoie une valeur None dans la méthode de cette route.

J'ai mis en place une route séparée dans flask pour les tests. Voici le code pertinent

de 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 () renvoie simplement un objet avec des paires clé: valeur. Le journal montre que les données sont correctement formatées json.

Et voici le code python

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

Ici les données arrivent comme Aucune

toute aide très appréciée

6
0_insomniac_0

C'est request.json Il renverra un dictionnaire des données JSON. Pour obtenir une valeur, vous utilisez request.json.get('value_name'). Donc votre itinéraire sera comme ça

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