静态文件从STATICFILES_DIRS部署,但不是STATIC_ROOT

时间:2012-09-18 18:22:03

标签: django django-staticfiles

我在开发环境中部署文件时遇到问题 请参阅下面的配置 python manage.py collectstatic按预期收集'/Users/vikingosegundo/Projects/website/media/'的所有文件,并将其存储在/Users/vikingosegundo/Projects/website/mydjangoproject/static/ 但是,虽然使用<link href="{% static "css/style.css"%}" rel="stylesheet" type="text/css">(呈现为<link href="/staticmedia/css/style.css" rel="stylesheet" type="text/css">)时指向css文件的链接是正确的,但/Users/vikingosegundo/Projects/website/media/处的原始文件将被部署,而不是STATIC_ROOT {{ 1}}。
即使我删除了/Users/vikingosegundo/Projects/website/mydjangoproject/static/中的文件。

我的配置错误在哪里?

settings.py

/Users/vikingosegundo/Projects/website/media/

1 个答案:

答案 0 :(得分:1)

我认为,这是因为使用django内置视图和帮助程序提供静态文件仅用于开发和调试目的。在项目设置中DEBUG为True时,您的静态文件将从其原始位置提供。这有助于避免在每次更改CSS文件时强制运行collectstatics管理命令。

当您关闭DEBUG设置时,django.conf.urls.static.static及其堂兄帮手将停止工作,因为它们仅用于开发目的。尽管如此,模板标签仍然有效,因为它们必须指向生产或开发中的正确静态文件URL。

运行collectstatic管理命令是将静态文件复制到最终目标(STATIC_URL)的便捷帮助,在生产环境中为它们提供服务是您自己的责任。这最好由(静态)Web服务器位置完成(避免通过django / python进程抽取它们),因此Django的文档明确建议不要使用Django进行静态文件服务。

有关在开发中提供静态文件的更多信息,请参阅Managing static files: Serving static files in development