从 Surviving django.contrib.staticfiles 中提取(或:如何使用 django 管理静态文件):
如何覆盖静态文件
想象一下,您想要覆盖/static_url/admin/css/base.css
. 您要做的第一件事是找到它的位置:
>>> ./manage.py findstatic admin/css/base.css
Found 'admin/css/base.css' here:
/home/jpic/env/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/base.css
然后,将其复制到您/srv/project/static_dir/
已添加到的 中settings.STATICFILES_DIRS
(参见上一段),例如:
mkdir -p /srv/project/static_dir/admin/css/
cp /home/jpic/env/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/base.css /srv/project/static_dir/admin/css
您的副本将驻留在
/srv/project/static_dir/admin/css/base.css
. 对于collectstatic
,
/srv/project/static_dir/
具有优先级
django/contrib/admin/static
,因为 的默认顺序
settings.STATICFILES_FINDERS
。
因此,collectstatic
将
/srv/project/static_url/admin/css/base.css
成为您的 override 的副本/srv/project/static_dir/admin/css/base.css
,而不是原始的django/contrib/admin/static/admin/css/base.css
在哪里:
/static_url/
是STATIC_URL
/srv/project/static_root/
是STATIC_ROOT
/srv/project/static_dir/
是列出的目录STATICFILES_DIRS
此外,您必须在部署时运行 collectstatic。
是的,我写这篇文章是因为我认为它可以帮助很多人,他们宁愿阅读一篇只涵盖最常见用例而不是完整文档的简短文章——即。最后期限。
希望这可以帮助。