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

如何解决Django REST Framework上传图片后URL无法访问的问题

问题根源

Django默认不会自动处理media目录下的资源请求,即便你在settings中配置了MEDIA相关参数,也需要额外补充路由规则才能正常访问图片。

分步解决

1. 确认settings配置完整

首先检查settings.py中已经正确配置media相关参数:

import os
# 其他配置省略
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

2. 补充media路由规则

打开项目根目录的urls.py,添加如下配置:

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 你自己的其他路由,比如DRF接口路由
    path('api/', include('你的应用名.urls')),
]

# 开发模式下开启media资源访问
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

3. 跨域配置排查(React前端必看)

如果React前端运行端口和Django不一致(比如React默认3000端口,Django默认8000端口),需要配置跨域规则,否则前端无法加载图片:

  • 先安装跨域依赖:pip install django-cors-headers
  • 修改settings.py配置:
INSTALLED_APPS = [
    # 原有其他应用
    'corsheaders',
]

MIDDLEWARE = [
    # 放在中间件列表最顶部
    'corsheaders.middleware.CorsMiddleware',
    # 原有其他中间件
]

# 开发环境使用,生产环境请替换为实际前端域名
CORS_ALLOW_ALL_ORIGINS = True

4. 生产环境注意事项

如果是上线部署,不要用Django本身提供media资源服务,效率极低,需要配置Nginx/Apache直接指向media文件夹对外提供访问。

配置完成后重启Django服务即可正常访问图片链接。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:36:03