我在Django的staticfiles应用程序中遇到了一些问题。
我已经添加了
'django.contrib.staticfiles',
到我的INSTALLED_APPS并添加了
STATIC_URL = '/static/' STATIC_ROOT = '/Users/kevdotbadger/django/mylook/static/'
到我的settings.py文件。
settings.py
我所有的静态文件都位于STATIC_ROOTMac上的文件夹中。
STATIC_ROOT
现在,在我的模板中
{{ STATIC_URL }}
正确呈现为/static/。
/static/
然而
{{ STATIC_URL }}css/style.css
导致404错误。我正在使用“ runserver”命令作为服务器。
简而言之:STATIC_ROOT仅在调用collectstatic manangement命令时使用。无需将目录添加到STATICFILES_DIRS设置即可提供静态文件!
在开发过程中(使用自动服务视图时),静态文件将自动在各个位置查找静态文件(因为你将其“ serve”视图称为静态文件的路径)。对于此搜索,它将使用所谓的“查找器”(在STATICFILES_FINDERS设置中定义)。
默认查找器之一是AppDirectoriesFinder,它将在你的INSTALLED_APPS设置的每个应用程序的“ / static /”目录中查找。
另一个默认查找器是FileSystemFinder,它将查找你在STATICFILES_DIRS设置中指定的目录。
顺便说一句,这两种搜索模式都类似于模板加载的工作方式。
运行collectstatic命令时将使用相同的技术,除了它现在将从不同位置收集文件(使用与上面相同的查找器),将找到的文件放入STATIC_ROOT中,以供部署。