在外部 Javascript 中使用 Python Flask 传递参数
Posted
技术标签:
【中文标题】在外部 Javascript 中使用 Python Flask 传递参数【英文标题】:Pass parameter with Python Flask in external Javascript 【发布时间】:2015-03-11 03:11:50 【问题描述】:我在我的网站上使用 Python Flask,并将几个参数传递给 javascript。这是我的代码:
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html", param1="Hello")
<html>
<head>
</head>
<body>
<p>Hello World</p>
</body>
<script>console.log(param1)</script>
</html>
通过这种方式,它可以毫无问题地工作。该示例是我自己的简化示例。但是,如果我想将脚本放在外部文件上并像这样调用它:
<html>
<head>
</head>
<body>
<p>Hello World</p>
</body>
<script src="/static/js/myjs.js"></script>
</html>
而myjs.js
文件是console.log(param1)
,那么它就不起作用了。那么,有没有什么办法可以用 Python Flask 在外部 Javascript 文件中传递参数呢?
【问题讨论】:
脚本必须在模板目录中 我有两个文件夹:1)静态和 2)模板。在静态文件夹中有 css、js 和图像。我应该移动 js 文件 ijn 模板以使其工作吗? 【参考方案1】:我使用了另一种方式来加载在 html 页面中指定的 javascript 文件:
首先,我在 <head></head>
标签中定义了一些变量,所以我调用了我的 javascript 文件:
<head>
...
<script src="/static/js/jquery.js"></script>
<script type=text/javascript>
$(document).ready(function()
$link_subcat = " url_for('load_subcategories') ";
$link_cat = " url_for('load_categories') ";
);
</script>
<script src=" url_for('static', filename='finances.js') "></script>
...
这是我的 javascript 文件内容:
$(document).ready(function()
$("#category").change(function()
$.ajax(
type: "POST",
url: $link_subcat,
data: cat: $(this).val(),
success: function(data)
$("#subcategory").html(data);
);
);
$("input[name=type]").change(function()
$.ajax(
type: "POST",
url: $link_cat,
data: type: $('input[name="type"]:checked').val(),
success: function(data)
$("#category").html(data);
);
);
);
这种方法对我有用。
【讨论】:
【参考方案2】:如果你想用 Jinja 渲染一个文件,你需要在它上面调用render_template
并传递给它想要的值。只是直接链接到静态文件显然不会这样做。一种解决方案是使用 Jinja 的 include
块。这要求 'myjs.js' 位于 'templates/js' 文件夹中,并将其包含在呈现的模板中,将所有模板上下文传递给包含的模板。
<script>% include 'js/myjs.js' %</script>
更好的解决方案是不需要在每次请求时都渲染 js,而是将参数从模板传递给 js 函数。
<script src=" url_for('static', filename='js/myjs.js') "></script>
<script>
my_func( my_var|tojson );
</script>
【讨论】:
以上是关于在外部 Javascript 中使用 Python Flask 传递参数的主要内容,如果未能解决你的问题,请参考以下文章
从按钮单击事件直接调用存储在外部 JS 文件中的 JavaScript 函数
如何在外部 JavaScript 中从 ServerControl 访问 ClientID
JavaScript 通过Javascript在外部窗口中打开链接