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>
运行示例 »

