【问题标题】:Django Static image not displaying while using block使用块时不显示Django静态图像
【发布时间】:2020-02-17 13:13:21
【问题描述】:

我正在使用 Django,我正在尝试显示图像,但出现错误。

第 35 行的块标记无效:“静态”,预期为“结束块”。你是否 忘记注册或加载此标签?

如果我直接在 index.html 页面上添加我的图像,则图像正在显示,但是当我使用扩展和块显示时,我收到了错误。

setting.py

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
)

home.html

  {% extends 'demo1/index.html' %}
    {% block content %}
    <img src="{% static 'images/web/landing-page.png' %}" alt="Landing Page">
   {% endblock %}

index.html

{% load static from staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title%}Home{% endblock %}</title>
    <link rel="stylesheet" href="{% static 'css/style.css'%}" type="text/css">
</head>
<body>
    {% block content %}

     {% endblock %}
</body>
</html>

【问题讨论】:

    标签: python django django-templates django-views


    【解决方案1】:

    您错过了home-page 中的公开{

    {% extends 'demo1/index.html' %}
    {% load static %}
    {% block content %}
        <img src="{% static 'images/web/landing-page.png' %}" alt="Landing Page">
    {% endblock %}
    

    注意

    Django 文档现在更喜欢{% load static %}{% load staticfiles %} 有效,但我认为它已被弃用。 https://docs.djangoproject.com/en/dev/ref/templates/builtins/#static

    更新:

    来自Django docs

    include 标签应该被认为是“render 这个子模板并包含 HTML”,而不是“解析这个子模板” 并包含其内容,就好像它是父级的一部分一样”。这意味着 包含的模板之间没有共享状态——每个 include 是一个完全独立的渲染进程。

    因此也请在您的主页中加载static文件

    【讨论】:

    • 感谢您提供信息,我更改了 {% load static %} 但仍然是同样的问题。如果我直接在我的 index.html 上添加图像,那么它可以工作,但不能从块中工作。
    • 是的,如果我在 home.html 上添加 {% load static %} 那么我会得到图像..但是我在某个地方读到我们不能在块页面上使用 {% load static %} .
    • 因为在 {% extends 'demo1/index.html' %} 我们已经添加了 {% load static %}。对吗?
    • @NarendraVerma,再次根据文档“扩展标签是这里的关键。它告诉模板引擎这个模板“扩展”另一个模板。当模板系统评估这个模板时,它首先找到父模板– 在这种情况下,“base.html”。”所以它首先定位父级,然后渲染当前模板,所以它需要检查加载的static
    • 感谢您的帮助。
    【解决方案2】:

    只需在您的 home.html 模板上添加{% load static %}

    【讨论】:

    • 我删除了 {% load static from staticfiles %} 并添加了 {% load static %} 仍然是同样的问题。
    • 你需要在链下的每个模板中都有{% load static %}:在 home.html 中也是如此(即使它扩展了已经有它的 index.html)。此外,当您 {% include ... %} 另一个模板时,如果您在其中使用 static,该模板需要 {% load static %}
    【解决方案3】:

    您的 home.html 中缺少大括号

    {% extends 'demo1/index.html' %} {% block content %} <img src="{% static 'images/web/landing-page.png' %}" alt="Landing Page"> % endblock %}

    应该是

    {% extends 'demo1/index.html' %} {% block content %} <img src="{% static 'images/web/landing-page.png' %}" alt="Landing Page"> {% endblock %}

    【讨论】:

    • 这是我在格式化代码时出现的拼写错误。
    • {% static 'images/web/landing-page.png' %} 这不起作用。我收到错误消息。
    猜你喜欢
    • 2017-03-05
    • 1970-01-01
    • 2017-04-04
    • 2015-07-17
    • 2015-12-16
    • 2016-11-23
    • 2021-06-24
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多