【问题标题】:django - when should I use media_root or static_root?django - 我什么时候应该使用 media_root 或 static_root?
【发布时间】:2011-09-17 18:09:06
【问题描述】:

我对 django 中的静态文件和媒体文件感到困惑。我在其他地方看到人们可以互换使用它。

什么时候应该使用media_root,什么时候应该使用static_root

如果我有网站图片,我应该把它放在静态的吗?如果我有产品图片,我会把它放在媒体上吗?

【问题讨论】:

    标签: django


    【解决方案1】:

    MEDIA_ROOT 是放置文件上传的目录,以及通常存储生成文件的位置。例如,我的一个 Django 应用程序允许用户上传图像。在其中一个模型类中,我使用来自sorl-thumbnailImageField 类型和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

    【讨论】:

    • 感谢您的回复。还有一个后续问题。如果我有产品图片怎么办?那应该去哪里?管理员可以上传它并应在网站上显示。
    • @bash-: 你把产品图片的路径存到数据库里了吗? ImageFieldFileField 的文件放在 MEDIA_ROOT 中,所以在这种情况下,是的,产品图片放在 MEDIA_ROOT 中(但您不需要手动将它们上传到 MEDIA_ROOT — 您的应用程序应该去做)。如果您手动维护产品图像并在模板上的<img> 标签中引用它们,那么产品图像应该进入STATIC_ROOT
    猜你喜欢
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2016-11-01
    • 2021-06-13
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多