Jinga表达式中的Javascript变量不会被替换

时间:2018-10-08 15:40:52

标签: javascript python html flask jinja2

我有一个Javascript函数,可在单击按钮时将一些HTML代码插入Flask应用程序的HTML页面中。这是Javascript函数:

function add_html(n){
    var snippet = "<table> \
        <thead> \
        <tr> \
            <th scope=\"col\"></th> \
            '{% for keys in data[n]['returns'] %}<th scope=\"col\">{{keys}}</th>{% endfor %}' \
        </tr> \
        </thead>";

    $(snippet).insertAfter("#div-id");
}

我希望将JavaScript变量n替换为它的值(它是整数),但是它不起作用... 如果我手动将其替换为1之类的整数,它将起作用。 我试图将n替换为" + n + "' + n + ',但没有任何效果。任何想法将不胜感激!

2 个答案:

答案 0 :(得分:0)

当然不会改变,您将n作为字符串文字传递。
您可能想要类似的东西:

var snippet = ... {%表示数据中的键['+ n +'] ['returns']%} ...

答案 1 :(得分:0)

对我有用的直接解决方案是将python中的render_template发送的变量的内容存储到Javascript变量中,并在不使用任何Jinja表达式的情况下按需使用。

<script type="text/javascript">
    var stored_data = {{data|safe}};

    function add_html_tab(n){
        var keys_columns_html = "";

        for(keys in stored_data[n-1]["returns"]){
            console.log(keys);
            keys_columns_html += "<th scope=\"col\">" + keys + "</th>";
        }

        $(keys_columns_html).insertAfter("#myID");
    }

</script>