【问题标题】:uploded image not saved in media folder上传的图像未保存在媒体文件夹中
【发布时间】:2021-10-24 09:56:57
【问题描述】:

settings.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / "static"]
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, "media/")
MEDIA_URL = '../media/images/'

urls.py

if settings.DEBUG:
    # Use static() to add url mapping to serve static files during development (only)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

models.py

    profile_image = models.ImageField(upload_to="../media/images")

文件路径:

-main_project
   /app             #django app
   /media/images    #media folder inside image folder
   /main            #django main app
   /static/css      #static folder for js,css,images,fonts
   /templates       #html templates

我也尝试过其他方式,但我的图片没有上传到媒体文件夹中

【问题讨论】:

  • 你的图片是showing通过上传图片的url成功在Django Admin吗?
  • 是的 @Van 图像通过 Django Admin 成功显示

标签: python django django-models django-forms django-templates


【解决方案1】:

MEDIA_URLMEDIA_ROOT 更改为:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

一旦你在上面定义了你就不需要明确地将媒体文件夹放在ImageField中:

profile_image = models.ImageField(upload_to="images")

查看官方docs管理文件

【讨论】:

  • 你好,这个方法我也试过了,还是不能上传
  • 确保您已经创建了media 文件夹,并且DEBUG 设置为True
【解决方案2】:

先改成这个

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

在你的模型中

profile_image = models.ImageField(upload_to="images")

我猜你正在使用表单上传图片,所以

<form method="POST" enctype="multipart/form-data">
       

使用 enctype,如果仍然无法使用,请尝试从管理面板更新它,而不是告诉我它是否更新

【讨论】:

  • 如果我从管理面板上传图片,它可以正常工作,但如果我尝试从前端上传图片,则它无法正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
  • 1970-01-01
  • 2019-04-10
  • 2021-03-08
  • 2017-11-07
相关资源
最近更新 更多