【问题标题】:Saving image in static/media folder via django admin issue通过 django 管理问题将图像保存在静态/媒体文件夹中
【发布时间】:2016-09-19 09:40:09
【问题描述】:

请告诉我为什么当我通过管理员保存图像时我看不到它?图像保存在数据库中,但如果只是在管理面板中按保存图像的链接,我看不到它。我得到 Page not found (404) 因为此路径中没有图像文件,但如果我在项目的文件夹中插入具有相同路径的文件,我可以看到它。因此,静态文件路径已正确定义。
我在模型中有图像字段:

 photo = models.ImageField(upload_to = 'photo/', blank=True)`

设置:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static")
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
MEDIA_ROOT = os.path.join(BASE_DIR, '..', 'static','media')
MEDIA_URL = '/static/media/'

并且似乎它应该将它保存在我的项目静态文件夹中,但它没有。

我的项目结构:

project/
       -app/
    -static/
           --media/
                  ---photo/

【问题讨论】:

  • 你设置MEDIA_ROOT路径了吗?用户上传文件通常保存在 /media/ 目录,而不是 /static/
  • 是的,MEDIA_ROOT = os.path.join(BASE_DIR, '..', 'static','media')

标签: django model admin


【解决方案1】:

媒体根应该是这样的-

MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static','media')

确保以下事项 - 在您的项目所在的文件夹中存在一个名为“static”的文件夹。它应该包含一个名为“媒体”的文件夹。

更新:我认为您的文件夹结构是错误的。以下应该是根据您的设置的结构 -

-static                            // MEDIA_ROOT and STATIC_ROOT setting
    -media                         // MEDIA_ROOT setting
-project(src)
    -app1
        -models.py
        -views.py
        -...
    -static                        // STATICFILES_DIRS setting

【讨论】:

  • 我用你的路径替换了路径,但没有任何改变。我的浏览器中有127.0.0.1:8000/static/media/photo/img.jpg,这是文件的正确路径,但由于某种原因文件没有保存在那里。
  • 也许你是对的,但我想我的结构也是可能的。我该怎么办?
  • 将设置更改为 MEDIA_ROOT = os.path.join(BASE_DIR, 'static','media')
  • 它会起作用但会出错,因为您不应该将媒体文件存储在项目 src 中。
  • 已解决!我只是删除了 MEDIA_ROOT = os.path.join(BASE_DIR, '..', 'static','media') 中的空字符串,所以它变成了 MEDIA_ROOT = os.path.join(BASE_DIR, 'static','media')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2021-06-24
  • 1970-01-01
相关资源
最近更新 更多