如何为jinja模板重新加载javascript?
我对jinja2还比较陌生(绝对不是web开发专家),我很难让与jinja模板相关联的javascript根据程序状态的变化重新加载(并更新其变量) 从本质上讲,我有一个模板在项目列表中迭代:如何为jinja模板重新加载javascript?,javascript,jinja2,Javascript,Jinja2,我对jinja2还比较陌生(绝对不是web开发专家),我很难让与jinja模板相关联的javascript根据程序状态的变化重新加载(并更新其变量) 从本质上讲,我有一个模板在项目列表中迭代: {% for item in items %} <p> {{item['property a']}}</p> blah blah blah` {items%]中的项的% {{item['property a']} 废话废话` 然后我调用在for循环中导入的另一个模板: {% i
{% for item in items %}
<p> {{item['property a']}}</p>
blah blah blah`
{items%]中的项的%
{{item['property a']}
废话废话`
然后我调用在for循环中导入的另一个模板:
{% import 'secondTemplate.html' as s %} //not sure whether this matters if it goes inside or outside the for loop
<p> {{s.doSecondStuff(item)}}</p>
{% block javascript %}
<script type="text/javascript">
{% include "secondTemplate.js" %}
</script>
{% endblock %}
{%import'secondTemplate.html'作为s%}//不确定这是否与进入for循环内部或外部有关
{{s.dosecondsuff(项目)}
这一切都有效。第二个模板每次执行每个项目,这就是我想要的
但是,我有一些与secondTemplate.html关联的secondTemplate.js,它对传递给secondTemplate.html的变量进行操作。我的问题是secondTemplate.js只对第一项的值进行操作
似乎来自的最佳答案会起作用,因此我一直在尝试将以下内容放入for循环中:
{% import 'secondTemplate.html' as s %} //not sure whether this matters if it goes inside or outside the for loop
<p> {{s.doSecondStuff(item)}}</p>
{% block javascript %}
<script type="text/javascript">
{% include "secondTemplate.js" %}
</script>
{% endblock %}
{%block javascript%}
{%include“secondTemplate.js”%}
{%endblock%}
但是js仍然只反映列表中第一项的值
有什么想法吗?谢谢 我不熟悉jinja,但如果您想重新加载js文件(如果我理解正确的话),有一个技巧如下。让我们用id制作所有标签,以便:
<script src="be/happy.js" id ="be/happy.js"></script>
<script src="be/very/happy.js" id ="be/very/happy.js"></script>
我不熟悉jinja,但如果您想重新加载js文件(如果我理解正确的话),有一个技巧如下。让我们用id制作所有标签,以便:
<script src="be/happy.js" id ="be/happy.js"></script>
<script src="be/very/happy.js" id ="be/very/happy.js"></script>
如果使用浏览器打开Flask应用程序,Flask将查看您定义的路线,并选择最合适的路线,例如:
@app.route('/<name>')
def index(name):
return render_template('index.htm', var1=name)
然后render_template('index.htm',name=“world”)
返回一个字符串,内容为“hello world!”
,这是视图返回的内容,也是Flask提供给浏览器的内容
因此,浏览器和Javascript代码完全不知道HTML的哪一部分是变量,哪一部分不是变量。当你在浏览器中执行Javascript时,你的Flask应用程序已经忘记了客户端和它所给出的name
值
现在还不清楚你在问什么,但我希望我已经向你清楚地表明,你试图通过这种方式实现的目标是不可能的。如果你用浏览器打开你的Flask应用程序,Flask会查看你定义的路线,并选择最合适的路线,例如:
@app.route('/<name>')
def index(name):
return render_template('index.htm', var1=name)
然后render_template('index.htm',name=“world”)
返回一个字符串,内容为“hello world!”
,这是视图返回的内容,也是Flask提供给浏览器的内容
因此,浏览器和Javascript代码完全不知道HTML的哪一部分是变量,哪一部分不是变量。当你在浏览器中执行Javascript时,你的Flask应用程序已经忘记了客户端和它所给出的name
值
不清楚您的要求是什么,但我希望我能向您明确说明,您试图通过这种方式实现的目标是不可能实现的。您的JavaScript看起来像什么/做什么?您能提供完整的模板代码吗?我在下面写了一个你可能会觉得有用的答案,但它并没有回答你的问题。在我看来,你似乎在混合服务器端和客户端处理。
secondTemplate.js
到底做什么?为什么不在服务器上使用Python呢?你到底在那里干什么?不要抽象!告诉我们你最终想要实现什么。你的JavaScript看起来像什么/做什么?你能提供完整的模板代码吗?我在下面写了一个你可能会觉得有用的答案,但它并没有回答你的问题。在我看来,你似乎在混合服务器端和客户端处理。secondTemplate.js
到底做什么?为什么不在服务器上使用Python呢?你到底在那里干什么?不要抽象!告诉我们你最终想要实现什么。