使用块时未显示Django静态图像

时间:2019-10-21 12:34:16

标签: python django django-templates django-views

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

  

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

如果我将图像直接添加到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>

3 个答案:

答案 0 :(得分: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文件

答案 1 :(得分:1)

只需在您的 home.html 模板顶部{% load static %}

答案 2 :(得分:0)

您在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 %}