导入时转义HTML

时间:2015-11-08 14:21:09

标签: python html flask escaping jinja2

我正在使用带有Jinja2模板的Flask来创建自定义表单。在这些表单中,我需要在字段值发生变化时更改表单的一部分。

基本上,我的表单有select#content-type,我可以在其中选择内容类型,然后fieldset#content,当select的值发生变化时,其HTML应该会有所不同。我有几个HTML模板,具体取决于select

的值

我的JS看起来像这样:

<script type="text/javascript">
    $(function () {
        $("select#content-type").change(function () {
            switch ($(this).val()) {
                case "type1":
                    var html = "{% include "type1.html" | escape %}";
                    $("fieldset#content").html(html);
                    break;
                // ...
            }
        });
    });
</script>

问题是,escape过滤器在include语句中不起作用,safe也不起作用。我怎样才能做到这一点,或者有更好的方法来做我想做的事情?

1 个答案:

答案 0 :(得分:0)

有一些解决方案。

实现此目的的一种简单方法是使用辅助CSS类隐藏表单的所有内容类型相关部分,例如.hide {display: none;},当客户选择某些内容时,只需从相应的div中移除此类:$("div#type1").removeClass("hide");

另一种方法是使用Ajax请求加载表单的内容类型相关部分。您可以定义类似/loadform的路由,其中​​服务器读取相应的模板文件并将其打印出来。然后,您可以将响应HTML注入原始表单。

第三种方法是在客户选择内容类型时使用javascript提交部分填充的表单,然后呈现完整的表单。