【问题标题】:What is the use of {% load static %}?{% load static %}有什么用?
【发布时间】:2020-04-06 01:38:25
【问题描述】:

我正在做关于 realpython https://realpython.com/get-started-with-django-1/ 的 django 教程 在其中一个模板中,他们添加了{% 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 %}

【问题讨论】:

  • 通过将其包装在 您实际上并没有删除 {% load %} 指令。删除该行,您应该会收到一条错误消息,告诉您模板标签 {% static %} 未定义。 {% load static %} 告诉 django 加载在文件 static.py 中定义的一组模板标签/过滤器(在您项目的任何应用程序中的文件夹 templatetags 中)。同样的方式你可以定义你自己的标签,把它们放在一个文件util_tags.py,然后用{% load util_tags %}加载它们。

标签: django django-templates django-static


【解决方案1】:

您正在使用 Django 未处理的 HTML 注释,而是忽略它并执行模板标签。尝试使用模板注释{# 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/

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2016-03-29
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多