2017-04-26 381 views
-1

我已閱讀了不同示例中的幾個帖子,通過post/get窗體將javascript變量傳遞給flask。我仍然不明白如何做到這一點。根據我的理解,表單會創建一個post/get,然後可以由python flask腳本調用並接收。有人可以寫一個非常簡單的例子,看看這應該是什麼樣子?將Javascript變量傳遞給Python Flask

從javascript中創建一個具有任何值的變量開始,然後進行post/get。最後,python的接收端應該是什麼樣子,並最終從python打印變量。

+0

這個問題太廣泛了。學習如何創建一個最小化的Flask應用程序(這裏有很棒的指南:http://flask.pocoo.org/docs/0.12/quickstart/),然後學習如何將參數傳遞給Flask端點。 – Brennan

回答

0

我如何做到這一點是使用javascript的ajax請求,看起來像這樣。我認爲最簡單的方法也是使用JQuery,因爲它可能會更純粹的JavaScript。

// 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需要JSGlue這基本上讓你用瓶的 url_for但JavaScript的。查看它,輕鬆安裝和使用。否則,我認爲你可以只用URL如「/ function_url」

取代它,然後在服務器端,你可能有這樣的事情:

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') 

我認爲主要的點查找Ajax請求在jquery中,flask的request.json()和jsonify()函數。