Django - 收集静态文件

处理静态文件

当 DEBUG = False 时,Django 不会自动处理项目中的静态文件,例如样式表、JavaScript 和图片。

当 DEBUG = True 时,一切正常,我们只需将它们放入应用程序的 static 文件夹中即可。

当 DEBUG = False 时,必须先收集静态文件并将其放入指定的文件夹,才能使用它们。


收集静态文件

要收集项目所需的所有静态文件,首先需要在 settings.py 文件中指定一个 STATIC_ROOT 属性。

这将指定一个用于存放静态文件的文件夹。

您可以随意命名该文件夹,我们将其命名为 productionfiles:

my_tennis_club/my_tennis_club/settings.py:

.
.

STATIC_ROOT = BASE_DIR / 'productionfiles'

STATIC_URL = 'static/'

.
.

您可以手动创建此文件夹,并将项目的所有静态文件收集并放入此文件夹,但 Django 提供了一个命令可以自动完成此操作:

python manage.py collectstatic

这将产生以下结果:

128 static files copied to 'C:\Users\your_name\myworld\my_tennis_club\productionfiles'.

128 个文件?为什么这么多?这是因为 Django 内置了管理用户界面。我们希望在生产环境中保留此功能,它包含大量文件,包括样式表、字体、图像和 JavaScript 文件。

如果您检查计算机上的文件系统,您会发现创建了一个新的文件夹:productionfiles。此文件夹包含 admin,其中包含管理用户界面的静态文件,以及您在添加静态文件章节中创建的 myfirst.css 文件。

my_tennis_club
    members/
    my_tennis_club/
    productionfiles/
        admin/
        myfirst.css

示例应该可以正常运行

现在您已经收集了项目的静态文件,并且如果您已安装了 WhiteNoise,那么添加静态文件章节中的示例终于可以正常运行了。

启动服务器并查看结果:

python manage.py runserver

请在您的浏览器中查看结果:127.0.0.1:8000/testing/。

示例

my_tennis_club/members/templates/template.html:

{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myfirst.css' %}">
<body>

{% for x in fruits %}
  <h1>{{ x }}</h1>
{% endfor %}

</body>
</html>
运行示例 »