【问题标题】:Jinja extends doesn't load imageJinja 扩展不加载图像
【发布时间】:2025-12-25 19:25:12
【问题描述】:

我正在将 Flask 用于一个小型网络应用程序,并且在使用 Jinja 扩展后无法显示我的背景图像。

我的 layout.html 包含一个标题:

    <!-- Header section -->
    <header class="header-section">
        <div class="header-warp">
            <div class="container">
                <a href="#" class="site-logo">
                    <img src="{{ url_for('static', filename='img/logo.png') }}" alt="">
                </a>
                <div class="user-panel">

          {%if session.user_id %}
              <a href="#">Logout</a>
          {% endif %}

                </div>
                <div class="nav-switch">
                    <i class="fa fa-bars"></i>
                </div>
            </div>
        </div>
    </header>
    <!-- Header section end -->
<main>
  {% block main %}
  {% endblock %}
</main> 

在另一个html文件中,我想扩展布局:

{% extends "layout.html" %}

{% block title %}
  Register
{% endblock %}

{%block main%}
    <section class="hero-section set-bg" data-setbg="{{ url_for('static', filename='img/review-bg.jpg') }}">

但是,review-bg.jpg 没有加载,相反,我收到了一个空白部分。但是,当我直接复制布局(不再使用扩展)时,图像加载正确。我仔细检查了 (http://127.0.0.1:5000/static/img/review-bg.jpg) 并且路径正确地返回了图像。

谁能帮我解释一下为什么Jinja在扩展后不加载图像?

【问题讨论】:

    标签: flask jinja2


    【解决方案1】:

    问题似乎出在data-setbg - 可能是 React 脚本,看这里:

    html tag attribute "data-setbg" is not working in React project

    或者尝试谷歌“data-setbg is not working”

    【讨论】:

    • 是的,是脚本搞砸了
    【解决方案2】:

    将扩展编辑为:

    {% extends "layout.html" %}
    
    {% block title %}
      Register
    {% endblock %}
    
    {%block main%}
         <img src="{{ url_for('static', filename='img/review-bg.jpg') }}" alt="">
    

    您现在看到图像了吗?如果是这样(我怀疑),它与 jinja/flask 无关,而是发生了其他事情。如果没有,请在 Firefox 中右键单击该页面,然后按查看源代码。链接指向哪里?

    【讨论】:

    • 是的,如果我把它放在 标签中,它就会出现。但是,我仍然无法弄清楚为什么 set-bg 是错误的