【问题标题】:Flask's Jinja nesting some rendered elements in 'strong' elementsFlask 的 Jinja 将一些渲染元素嵌套在“强”元素中
【发布时间】:2022-01-03 09:22:14
【问题描述】:

我遇到了 Jinja 的奇怪行为。我做了一个动态烧瓶路线,所以我做了一个 jinja 模块化模板,它只是一个 for 循环,为我给 Jinja 的一些数据(在字典中)中的每个 article 创建一个元素,模板看起来像这样:

    {% for theme in article_data %}
        {% for article in theme["article"] %}
            {% if article["main"] == 1 %}
            <div style="background-image: url('{{article['content']['image1']}}');" class="theme-item-bg frow space-between">
            {% endif %}
        {% endfor %}
        <div class="wrapper-row space-between pinkfilter">
            <div class="uB theme-item-text">{{theme["name"]}}</div>
            <div class="pageChanger waves-effect waves-light btn uL primaryB" page="/nos-articles/{{theme['name']}}" title="{{theme['name']}}">Voir plus d'articles</div>    
        </div>
    </div>
    {% endfor %}

它在我的大多数页面上都可以正常工作,但有一个非常奇怪的行为,Jinja 正确渲染了一篇文章并将其他文章嵌套在 strong 元素中。

用于渲染页面的数据具有相同的结构并被正确解析。

有没有办法防止 Jinja 在 strongelement 中嵌套东西?

【问题讨论】:

  • Jinja 似乎不太可能凭空发明元素。你确定你正在运行你认为你正在运行的代码吗?
  • 我是,它对其他元素也是如此(例如,当我包含我的页脚模板时)但它真的让我为那个循环感到困扰,因为它打破了前面

标签: python flask jinja2


【解决方案1】:

theme["name"] 中必须有一些 html(通过使用 theme["name"]|escape 转义来修复它),或者 &lt;strong&gt; 标记未在您的模板中关闭。

Jinja 不会插入随机的 html 标签,但浏览器会在尝试解析和修复损坏的 html 代码时这样做

【讨论】:

  • 在调查了我得到的数据后,似乎&lt;strong&gt; 已打开但从未关闭,escape 不起作用,但删除打开的&lt;strong&gt; 解决了问题。
猜你喜欢
  • 2019-05-12
  • 1970-01-01
  • 2020-10-06
  • 2019-06-16
  • 2017-10-01
  • 2021-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多