我对django中的静态文件和媒体文件感到困惑。我在其他地方看到人们可以互换使用它。
我应该何时使用media_root
,何时应该使用static_root
?
如果我有网站图片,我应该把它放在静态吗?如果我有产品图片,我会把它放在媒体上吗?
答案 0 :(得分:32)
MEDIA_ROOT
是放置文件上载的目录,以及通常存储生成文件的位置。例如,我的一个Django应用程序允许用户上传图像。在其中一个模型类中,我使用sorl-thumbnail中的ImageField
类型和upload_to='%Y-%m'
。每当用户上传图片时,该文件都会存储在MEDIA_ROOT/%Y-%m/
中(%Y
替换为当前年份,%m
替换为当前月份编号)。此外,当sorl-thumbnail为上传的图片生成缩略图时,它会将缩略图by default放在MEDIA_ROOT/cache/
的某处。
STATIC_ROOT
用于配置放置静态资产的目录。例如,网页设计中使用的网站样式表,JavaScript文件和图像是进入STATIC_ROOT
的文件类型。如果您安装了多个应用程序,则每个使用静态文件的应用程序都可以拥有自己的静态文件目录。您使用collectstatic
管理功能(通过python manage.py collectstatic
调用)将所有应用的静态文件复制到STATIC_ROOT
。