You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django+Cloudinary后台上传图片报404:无法找到res.cloudinary.com页面

Django+Cloudinary图片上传后URL返回404错误

我定义了如下Teacher模型:

class Teacher(models.Model):

...    
    # Image Field
    image = models.ImageField(upload_to='teacher_images/', blank=False, null=False)  

    # Metadata
...
    class Meta:
        verbose_name = "Teacher"
        verbose_name_plural = "Teachers"
        ordering = ['name']
        indexes = [
            models.Index(fields=['email']),  
            models.Index(fields=['department']),  
        ]

并在settings.py中配置了Cloudinary:

cloudinary.config( 
    cloud_name = "XXXXXXX", 
    api_key = "XXXXXXX", 
    api_secret = "XXXXXXX", 
    secure=True
)

# Set default storage backend to Cloudinary
DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.MediaCloudinaryStorage'
MEDIA_URL = 'https://res.cloudinary.com/dce5bvfok/image/upload/'

在Django管理面板上传图片后,生成的URL格式正确(如https://res.cloudinary.com/dce5bvfok/image/upload/teacher_images/hsu2-min.JPG),但访问该URL时却提示404错误:"This res.cloudinary.com page can’t be found",请问该问题的原因是什么,如何解决?


原因分析与解决方案

1. Cloud名称不匹配

你在cloudinary.config里填的cloud_name是XXXXXXX,但MEDIA_URL里用的是dce5bvfok,这两个必须完全一致。Cloud名称错误的话,Cloudinary找不到对应的资源库,直接返回404。

  • 解决:登录Cloudinary控制台,复制正确的cloud_name,替换settings.py中cloudinary.config里的XXXXXXX,确保和MEDIA_URL中的cloud_name完全相同。

2. 图片未实际上传到Cloudinary

Django生成了URL不代表上传成功,可能上传过程中出了问题,图片根本没传到Cloudinary服务器。

  • 排查:登录Cloudinary控制台,查看teacher_images目录下是否存在对应的图片文件。
  • 解决:
    • 核对api_key和api_secret的拼写,确保和Cloudinary控制台里的一致。
    • 确认已安装cloudinary和cloudinary-storage依赖,版本兼容(可执行pip install cloudinary cloudinary-storage重新安装)。
    • 查看Django后台日志,检查是否有上传相关的错误提示(比如网络问题、权限不足)。

3. 资源路径格式不符

Cloudinary的资源URL规范是https://res.cloudinary.com/[cloud_name]/image/upload/[public_id],如果upload_to的设置导致生成的public_id格式不对,也会找不到资源。比如实际存储的public_id可能不带文件后缀,但Django生成的URL带了后缀,就会匹配失败。

  • 解决:
    • 查看Cloudinary控制台中图片的实际public_id,和Django生成的URL路径对比,确认是否一致。
    • 可以在settings.py中添加以下配置,确保存储和URL生成逻辑正确:
      CLOUDINARY_STORAGE = {
          'MEDIA_TAG': 'media',
          'SECURE': True,
      }
      

4. 安全设置拦截访问

如果你的Cloudinary账号开启了允许域名访问限制,直接访问URL会被拦截返回404。

  • 解决:登录Cloudinary控制台,进入「Settings」→「Security」,检查「Allowed fetch domains」是否包含你的网站域名,或者暂时关闭该限制测试是否能正常访问。

内容的提问来源于stack exchange,提问作者jahantaila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:42:43