2017-04-26 6 views
-1

Ich habe mehrere Beiträge zu verschiedenen Beispielen zum Übergeben einer Javascript-Variablen an Kolben durch Post/Get-Formulare gelesen. Ich verstehe immer noch nicht, wie ich das machen soll. Aus meiner Sicht erstellt das Formular ein Post/Get, das dann vom Python-Flask-Skript aufgerufen und empfangen werden kann. Kann jemand ein sehr einfaches Beispiel darüber schreiben, wie das aussehen soll?Übergeben Javascript-Variable zu Python Flask

Ausgehend von dem Erstellen einer Variablen mit einem beliebigen Wert in Javascript und dann den Post/Get. Zuletzt sollte das Empfangsende auf Python aussehen und schließlich die Variable aus Python ausgeben.

+0

Diese Frage ist zu breit. Erfahren Sie, wie Sie eine minimale Flask-Anwendung erstellen (hier eine Anleitung: http://flask.pooco.org/docs/0.12/quickstart/) und lernen Sie dann, wie Sie Parameter an einen Flask-Endpunkt übergeben. – Brennan

Antwort

0

Wie ich dies tat, war eine Ajax-Anfrage von der Javascript, die in etwa so aussehen würde. Ich denke, der einfachste Weg wäre die Verwendung von JQuery, da es mit reinem Javascript etwas ausführlicher sein könnte.

// some movie data 
var movies = { 
    'title': movie_title, 
    'release_date': movie_release_date 
    } 

$.ajax({ 
url: Flask.url_for('my_function'), 
type: 'POST', 
data: JSON.stringify(movies), // converts js value to JSON string 
}) 
.done(function(result){  // on success get the return object from server 
    console.log(result)  // do whatever with it. In this case see it in console 
} 

Flask.url erfordert JSGlue die im Grunde lassen sie Sie url_for Flask des verwenden, aber mit Javascript. Nachschlagen, einfache Installation und Nutzung. Ansonsten denke ich, nur um es mit der URL zB ‚/ function_url‘

Dann auf der Serverseite ersetzen könnte man vielleicht so etwas wie dieses:

from flask import request, jsonify, render_template 
import sys 

@app.route("/function_route", methods=["GET", "POST"]) 
def my_function(): 
    if request.method == "POST": 
     data = {} // empty dict to store data 
     data['title'] = request.json['title'] 
     data['release_date'] = request.json['movie_release_date'] 

     // do whatever you want with the data here e.g look up in database or something 
     // if you want to print to console 

     print(data, file=sys.stderr) 

     // then return something back to frontend on success 

     // this returns back received data and you should see it in browser console 
     // because of the console.log() in the script. 
     return jsonify(data) 
    else: 
     return render_template('the_page_i_was_on.html') 

Ich denke, die wichtigsten Punkte sind AJAX-Anfragen zu sehen in jquery, flash request.json() und jsonify() funktioniert.