将变量从Flask(python)传递到与HTML文件分离的Javascript文件中

将变量从Flask(python)传递到与HTML文件分离的Javascript文件中,javascript,jquery,python,html,flask,Javascript,Jquery,Python,Html,Flask,我知道您可以通过在Python文件中包含return render\u template('index.html',variable=newvariable)从Flask调用变量,并 <script> var JSVAR = '{{ newvariable }}'; </script> var JSVAR='{{newvariable}}}'; 在index.html文件中。但是,如果我想将该变量传递到index.html文件中包含的纯Javascript文件,该怎

我知道您可以通过在Python文件中包含
return render\u template('index.html',variable=newvariable)
从Flask调用变量,并

<script>
var JSVAR = '{{ newvariable }}';
</script>

var JSVAR='{{newvariable}}}';
在index.html文件中。但是,如果我想将该变量传递到index.html文件中包含的纯Javascript文件,该怎么办?我想我需要使用id参数创建一个HTML“变量”排序,然后使用jQuery调用它,但我不知道语法


有什么想法吗?

公开一个函数并对其进行ajax调用不是一个坏方法。这种方法的好处是为维护人员留下清晰的函数调用轨迹

第二个链接有更详细的描述,但总体思路是您设置了一个Flask应用程序来处理来自浏览器的请求,并且在该应用程序中,您设置了一个方法,可以将请求发送到该应用程序,该方法将负责将变量传递回js客户端

在js脚本中,然后对该方法的url进行ajax调用,并具有处理响应的回调函数。这种方法可以做一些非常非常酷的事情


如果您不熟悉ajax,用谷歌搜索一些教程可能会很有用。总而言之,这篇文章有一半不错:

刚刚遇到了同样的问题,下面是我所做的

from jinja2.environment import Template

def render_js():
    file_content = open(path_to_jsfile, 'r').read()
    template = Template(file_content)
    return template.render(arg1='value1', arg2='value2')

谢谢,我现在正在研究AJAX。你能更清楚地知道哪段代码在哪里吗?我是否在index.html文件的标记内调用jQuery.ajax()?公开函数是什么意思?所以基本上,在我的javascript文件中,我有一个函数,它发出ajax请求并调用服务器来告诉它应该有什么?比如,如果我的javascript文件中有
var url=“validate?id=“+escape(target.value)
,那么我的Flask文件中是否应该有
@('/validate?id=')
。“expose”的意思是“创建映射到视图函数的路由”,如
@app.route('/validate')
所示。当然,在flask中,您可以通过请求对象a la
requests.args.get('id','')
访问查询参数。《快速入门指南》中有一段很好的话:您真的不应该通过模板引擎将变量传递到嵌入式javascript中。那会很快变得一团糟。走AJAX路线是一个更好的选择。