如何在 Jinja 模板中设置值并将其传递给 javascript 变量

How to set a value inside Jinja template and pass it to javascript variable

提问人:Tomas Am 提问时间:5/13/2021 最后编辑:Tomas Am 更新时间:5/14/2021 访问量:1729

问:

在我的 Flask 应用程序的 Jinja 模板中,我有这个片段:

{% elif mydata.accepted==True %}
    {% set accept_off = 'Yes' %}
    {{accept_off}}
{% else %}

它设置值并在 html 中呈现。工作正常。
Javascript 片段:

<script>
        $(document).ready(function () {
            console.log( "ready!" );
            alert('{{ accept_off}}'); // comes empty, though rendered in template
            alert('{{ datafromserver}})'; // works fine
            var item = ('{{set accept_off = yes}}');
            alert(item); // works as well

...

此代码片段警告空的“accept_off”变量,尽管在模板中它呈现良好。 第二个警报在渲染期间传递来自服务器的数据,它也可以正常工作。

那么,我无法在Jinja模板中设置变量,然后在javadcript中使用它,这是如何工作的呢?

HTML jQuery 模板 烧瓶 jinja2

评论

0赞 Ambassador Kosh 5/14/2021
可能不是您要找的错误,但最后一个撇号应该在括号内alert('{{ datafromserver}})';alert('{{ datafromserver}}');
0赞 Tomas Am 5/14/2021
感谢您的注意,是的,这不是这里的主要问题。你知道在jijna模板中设置变量应该在js中访问吗?
0赞 Ambassador Kosh 5/14/2021
这篇文章可能会帮助您 stackoverflow.com/questions/21626048/...这是可能的,尽管我不能说你的情况是否可能。在为页面上的每篇帖子创建模态时,我只需要这样做一次,例如。这工作正常,尽管它位于标签内的 html 页面中(而不是单独的文件)var modal = document.getElementById("postModal{{ post.id }}");<script>script.js
0赞 voscausa 5/14/2021
在我看来,这似乎是一个范围问题。您可以使用命名空间来解决它。更多内容:jinja.palletsprojects.com/en/2.10.x/templates/#assignments jinja.palletsprojects.com/en/2.10.x/templates/#namespace

答: 暂无答案