你必须告诉 Django 在哪里可以找到静态文件。这是通过设置来完成的静态文件目录 https://docs.djangoproject.com/en/2.0/ref/settings/#staticfiles-dirs在你的设置.py module.
通常我们会做这样的事情,使用BASE_DIR
:
设置.py
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
有关静态设置的一些额外信息:
一开始有点混乱,因为 Django 有三个类似的配置:
STATIC_URL
STATIC_ROOT
STATICFILES_DIRS
基本上,STATIC_URL
将用于生成 URLserve你的静态资产。它可能是一个相对 URL,就像您所拥有的:
STATIC_URL='/static/'
{% static 'styles/custom.css' %} => /static/styles/custom.css
它可能是一个完整的 URL:
STATIC_URL='https://static.yourdomain.com/'
{% static 'styles/custom.css' %} => https://static.yourdomain.com/styles/custom.css
现在STATICFILES_DIRS
Django 将在其中找到您的静态文件。它通常位于项目文件夹中。但!这不是 Django 的来源serve您向客户提供的静态资产。就像是,你的静态文件的来源在哪里.
那是因为 Django 并不真正提供此类文件(.js, .css, .jpg)。好吧,无论如何不是默认的。您可以使用第三方应用程序,例如白噪声 http://whitenoise.evans.io/en/stable/.
这也是我们拥有STATIC_ROOT
,这是告诉Django从哪里复制这些文件STATICFILES_DIRS
这样其他人就可以为我服务。这个其他人通常是 Apache 或 NGINX。
我们只使用STATIC_ROOT
用于部署。
当我们将 Django 应用程序部署到生产服务器时,我们通常运行以下命令python manage.py collectstatic
。这就是 Django 从中复制文件的地方STATICFILES_DIRS
to the STATIC_ROOT
.
但在开发阶段你实际上不必关心这么多细节,因为虽然DEBUG=True
,Django 将使事情变得更容易并提供静态文件。