Django - 收集静态文件
处理静态文件
在你的项目中,像样式表、JavaScript 和图片这样的静态文件,在 DEBUG = False
时 Django 不会自动处理。
当 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 提供了一个命令可以为你完成此操作
py manage.py collectstatic
这将产生以下结果:
已将 131 个静态文件复制到 'C:\Users\your_name\myworld\my_tennis_club\productionfiles'。
131 个文件?为什么这么多?这是因为 Django 内置的管理用户界面。我们希望在生产环境中保留此功能,它附带了大量的样式表、字体、图片和 JavaScript 文件。
my_tennis_club
members/
my_tennis_club/
productionfiles/
admin/
myfirst.css
示例应能正常工作
现在你已经收集了项目的静态文件,如果你已经安装了 WhiteNoise,那么来自添加静态文件章节的示例将最终能够正常工作。
启动服务器并查看结果
py 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>
运行示例 »