我有一个layout.html文件,如下:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<link href="{% static 'app/styles.css' %}" rel="stylesheet">
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
和扩展的.html如下:
{% extends "layout.html" %}
{% block body %}
<div class="maincontainer">
<h1>Extended</h1>
<img src="{% static 'app/images/image.svg' %}" alt="image">
</div>
{% endblock %}
当我加载 exnteded.html 时,出现以下错误:
django.template.exceptions.TemplateSyntaxError: Invalid block tag on line 13: 'static', expected 'empty' or 'endfor'. Did you forget to register or load this tag?
我测试了一些场景:
<img src="{% static 'app/images/image.svg' %}" alt="image">
,CSS 样式表将完美加载。{% load static %}
添加到 Extended.html,图像和 CSS 样式表都会加载。我查看了 Django 文档,并确保 settings.py 文件在 INSTALLED_APPS 和 STATIC_URL =“static/”中确实有 django.contrib.staticfiles。
我在这里遗漏了什么吗?
要在扩展另一个子模板的子模板中使用
TemplateSyntaxError
时解决 {% static %}
问题,请确保在使用静态标签的每个子模板中包含 {% load static %}
。这种显式加载是必要的,因为在父模板中加载的模板标签在子模板中不会自动可用:
{% extends "layout.html" %}
{% load static %} <!-- Ensure static is loaded in the child template -->
{% block body %}
<div class="maincontainer">
<h1>Extended</h1>
<img src="{% static 'app/images/image.svg' %}" alt="image">
</div>
{% endblock %}