Django后台通过Customer模型添加头像触发_getfullpathname类型报错
问题根因与修复方案
报错的核心原因是settings.py中MEDIA_ROOT的配置不符合Django规则:
Django要求
MEDIA_ROOT为单个字符串或Path类型的路径,用于指定用户上传媒体文件的本地存储根目录。你当前的配置给路径套上了方括号,将其变成了列表类型,调用路径处理接口时就触发了类型不匹配的报错。
修复步骤
- 修改
settings.py中的MEDIA_ROOT配置,去掉外层的方括号:
# 修正前(错误) MEDIA_ROOT = [BASE_DIR/'static/images'] # 修正后(正确) MEDIA_ROOT = BASE_DIR/'static/images'
- 补充必要的前置检查:
- 确认项目根目录下存在
static/images文件夹,不存在则手动创建,避免上传时触发路径不存在的报错 - 若未安装图片处理依赖,执行
pip install pillow安装ImageField所需的依赖库 - 若需要在前端模板中直接访问上传的头像,需要在项目主
urls.py中添加媒体文件路由配置,示例如下:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 你原有所有的路由配置保留在这里 ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
内容的提问来源于stack exchange,提问作者Lewcamps
相关产品推荐
相关产品推荐

