如何为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

我对jinja2还比较陌生(绝对不是web开发专家),我很难让与jinja模板相关联的javascript根据程序状态的变化重新加载(并更新其变量)

从本质上讲,我有一个模板在项目列表中迭代:

{% 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呢?你到底在那里干什么?不要抽象!告诉我们你最终想要实现什么。