一尘不染

Django staticfiles应用程序帮助

django

我在Django的staticfiles应用程序中遇到了一些问题。

我已经添加了

'django.contrib.staticfiles',

到我的INSTALLED_APPS并添加了

STATIC_URL = '/static/'
STATIC_ROOT = '/Users/kevdotbadger/django/mylook/static/'

到我的settings.py文件。

我所有的静态文件都位于STATIC_ROOTMac上的文件夹中。

现在,在我的模板中

{{ STATIC_URL }}

正确呈现为/static/

然而

{{ STATIC_URL }}css/style.css

导致404错误。我正在使用“ runserver”命令作为服务器。


阅读 371

收藏
2020-03-28

共1个答案

一尘不染

简而言之:STATIC_ROOT仅在调用collectstatic manangement命令时使用。无需将目录添加到STATICFILES_DIRS设置即可提供静态文件!

在开发过程中(使用自动服务视图时),静态文件将自动在各个位置查找静态文件(因为你将其“ serve”视图称为静态文件的路径)。对于此搜索,它将使用所谓的“查找器”(在STATICFILES_FINDERS设置中定义)。

  1. 默认查找器之一是AppDirectoriesFinder,它将在你的INSTALLED_APPS设置的每个应用程序的“ / static /”目录中查找。

  2. 另一个默认查找器是FileSystemFinder,它将查找你在STATICFILES_DIRS设置中指定的目录。

顺便说一句,这两种搜索模式都类似于模板加载的工作方式。

运行collectstatic命令时将使用相同的技术,除了它现在将从不同位置收集文件(使用与上面相同的查找器),将找到的文件放入STATIC_ROOT中,以供部署。

2020-03-28