问题描述
如何使用Django的collectstatic
填充“媒体”(由模型管理的)资产文件?
我有一个使用“media” files support – files managed and associated with Model fields的Django应用-用于诸如特定实例的产品图片和图标之类的资产。
这些(对于某些字段)不是用户上传的;它们与模型一起开发,并在通过路径引用文件的数据夹具中进行了描述。
对于那些媒体资产,在部署应用程序时需要填充文件;这意味着从各个位置收集文件,并在“媒体”存储希望找到它们的位置提供它们。
收集这些“媒体”文件后,Web应用程序已经成功为其提供了服务。 correct configurations正在工作。
但是,每次部署站点时,都需要从对开发有意义的应用程序模型位置将媒体文件收集到中央目录树(MEDIA_ROOT
)中,在该目录树中文件存储期望它们被送达。
deploying “static” files工具collectstatic
非常紧密地执行了此任务(这些文件不是专门与任何模型相关联,而是与整个站点相关联,并在上下文之外提供服务模型权限)。
我如何使用collectstatic
(或其实现)来收集“媒体”资产文件以进行部署?
解决方法
(感谢@ iain-shelvington提供此解决方案。Iain,随时可以自己做出与此等价的答案。)
这项工作正是PyPI软件包“ django-media-fixtures”的用途。
一个简单的项目,用于复制媒体文件(用于灯具加载),几乎与staticfiles一样。
[…]只需调用管理命令
collectmedia
,就像使用collectstatic
一样 […]然后,应用程序中media_fixtures
文件夹中的所有文件都将被复制到您的MEDIA_ROOT。