DRF项目部署到PythonAnywhere后访问上传图片报404资源未找到错误求解
DRF项目部署PythonAnywhere媒体文件404问题解决步骤
- 修正settings.py配置顺序
你的原有配置中BASE_DIR的定义位置在STATIC_ROOT、MEDIA_ROOT之后,会导致路径拼接时BASE_DIR未定义,路径解析错误。请调整为如下顺序:
# 优先定义BASE_DIR BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') MEDIA_URL = '/pictures/' MEDIA_ROOT = os.path.join(BASE_DIR, 'uploaded_pictures')
- 核对PythonAnywhere静态文件映射配置
进入PythonAnywhere Web管理页,在Static files配置区添加/确认如下配置:- URL栏填入
/pictures/ - Directory栏填入你项目中
uploaded_pictures文件夹的绝对路径,格式为/home/你的PythonAnywhere用户名/你的项目文件夹名/uploaded_pictures
配置完成后点击Reload重载Web应用生效。
- URL栏填入
- 补充urls.py媒体路由配置
Django生产环境默认不提供媒体文件服务,你可以在urls.py中补充路由规则适配:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), path('api-auth/', include('rest_framework.urls')), path('api/', include('gardesh.urls')) ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
- 验证文件存储位置
进入PythonAnywhere文件管理页,打开uploaded_pictures文件夹,确认user/prof、user/cover子文件夹存在,且你上传的图片文件存储在对应目录下。如果是配置顺序错误前上传的文件,会存储到错误路径,需要重新上传测试。
内容的提问来源于stack exchange,提问作者morteza zarrin
相关产品推荐
相关产品推荐

