{% load static %}有什么用?

What is the use of {% load static %}?

我正在 realpython 上做 django 教程 https://realpython.com/get-started-with-django-1/ 在其中一个模板中,他们添加 {% load static %} 以加载应用程序的静态文件。在同一个模板中,他们还加载了这样的图像 <img class="card-img-top" src="{% static project.image %}">。这里的 static 关键字告诉 django 在 static folder 中查找 project.image 中定义的文件名。当我删除 {% load static %} 时,图像仍然显示。那么,如果没有它也能完美渲染图像,我为什么还需要这部分呢?代码如下:

    {% extends "base.html" %}
<!--{% load static %}-->

{% block page_content %}
<h1>Projects</h1>
<div class="row">
    {% for project in projects %}
    <div class="col-md-4">
        <div class="card mb-2">
            <img class="card-img-top" src="{% static project.image %}">
            <div class="card-body">
                <h5 class="card-title">{{ project.title }}</h5>
                <p class="card-text">{{ project.description }}</p>
                <a href="{% url 'project_detail' project.pk %}" class="btn btn-primary">Read more</a>
            </div>
        </div>
    </div>
    {% endfor %}
</div>
{% endblock %}

您正在使用 HTML 注释,Django 不处理它,而是忽略它并执行模板标记。尝试使用模板评论 {# you long comment #}.

所以代码变为

   {% extends "base.html" %}
{# {% load static %} #}

{% block page_content %}
<h1>Projects</h1>
<div class="row">
    {% for project in projects %}
    <div class="col-md-4">
        <div class="card mb-2">
            <img class="card-img-top" src="{% static project.image %}">
            <div class="card-body">
                <h5 class="card-title">{{ project.title }}</h5>
                <p class="card-text">{{ project.description }}</p>
                <a href="{% url 'project_detail' project.pk %}" class="btn btn-primary">Read more</a>
            </div>
        </div>
    </div>
    {% endfor %}
</div>
{% endblock %}

{% load static %} 实际上加载了标签 static。此标签允许您嵌入静态文件的链接 https://docs.djangoproject.com/en/3.0/howto/static-files/#configuring-static-files.

您还可以创建自定义标签 https://docs.djangoproject.com/en/3.0/howto/custom-template-tags/