将 Javascript 变量传递给 Python Flask

T.c*_*der 5 html javascript python request flask

我已经阅读了几个关于不同示例的帖子,用于通过 post/get 表单将 javascript 变量传递给flask。我仍然不明白如何做到这一点。根据我的理解,该表单创建了一个 post/get,然后可以被 python flask 脚本调用和接收。有人可以写一个非常简单的例子来说明这应该是什么样子吗?

从在 javascript 中创建一个具有任何值的变量开始,然后进行 post/get。最后,python 上的接收端应该是什么样子,最后从 python 打印变量。

小智 8

我是如何做到这一点的,它是使用来自 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
})
Run Code Online (Sandbox Code Playgroud)

Flask.url 需要 JSGlue,它基本上让你使用 Flask 的 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')
Run Code Online (Sandbox Code Playgroud)

我认为主要是在jquery中查找ajax请求,flask的request.json()和jsonify()函数。

编辑:更正的语法