将 JavaScript 变量传递给 Flask url_for
Posted
技术标签:
【中文标题】将 JavaScript 变量传递给 Flask url_for【英文标题】:Pass JavaScript variable to Flask url_for 【发布时间】:2016-07-08 16:25:51 【问题描述】:我有一个端点,它在 url 中获取一个值并生成一些将插入到 div 中的内容。我想使用 javascript 变量构建带有 url_for
的 url。但是,$variable1
作为字符串传递,而不是 variable1
的值。如何将 JavaScript 变量的值传递给 url_for
?
function myFunction()
var variable1 = "someString"
$('#demo').load(
" url_for('addshare2', share = '$variable1') "
);
【问题讨论】:
【参考方案1】:有时我将以下解决方法与临时占位符字符串一起使用:
var variable1 = "someString";
$('#demo').load(
" url_for('addshare2', share='ADDSHARE2') ".replace("ADDSHARE2", variable1)
);
感觉不太对劲,我仍在寻找更好的解决方案。但它确实有效。
【讨论】:
【参考方案2】:您无法在 Jinja 中评估 JavaScript。您尝试在 Jinja 呈现时在服务器端生成一个 url,但您引用的变量仅在客户端浏览器上运行的 JavaScript 中可用。
在客户端构建 url 是最直接的解决方法。 (我不知道你的路线是什么样的,所以这里是一个例子。)
$('#demo').load('/url/for/addshare2/' + variable1);
但是,这不是很有用,因为您不能使用url_for
,因此您必须对网址进行硬编码。这是一个很好的迹象,表明您需要的是一个向其传递参数的 AJAX 端点,而不是一个包含值的端点。
@app.route('/addshare2', methods=['POST'])
def addshare2():
share = request.json['share']
...
return jsonify(result=...)
现在您可以使用url_for
生成url,并将参数作为表单数据传递。
$.post(
' url_for('addshare2') ',
share: variable1,
function (data)
// do something with data on successful response
);
【讨论】:
以上是关于将 JavaScript 变量传递给 Flask url_for的主要内容,如果未能解决你的问题,请参考以下文章
如何在模板中将数据从 Flask 传递到 JavaScript?
如何使用flask将javascript数组传递给python脚本[使用flask示例]
将变量从 Flask (python) 传递到与 HTML 文件分开的 Javascript 文件中
Flask / WTF表单将变量传递给模板会产生500错误,表单未定义