我在开发环境中部署文件时遇到问题
请参阅下面的配置
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/
答案 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。