Django:TypeError: coercing to Unicode: need string or buffer, list found

小白记录:

Django+admin后台管理,添加文章时,报错

Exception Value: coercing to Unicode: need string or buffer, list
found
TypeError at /admin/interview/interview/add/ coercing to
Unicode: need string or buffer, list found

一开始以为是图片插入时路径有问题,顺着图片的路径找了一下
models:

    image = models.ImageField(verbose_name='封面', upload_to='interview/%Y/%m',max_length=600)

urls:

    url(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT}), #管理媒体文件路径和处理模块

settings:

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')# 添加static路径(js/css/html)
]

MEDIA_URL = '/media/'
MEDIA_ROOT = [os.path.join(BASE_DIR, 'media')]# 连接media到根目录 /qiuzhiquan/media/interview/%Y/%m

感觉没什么问题,然后再进行一遍数据库迁移去找该列,数据库中也没有问题
最后觉得还是路径问题去找了一下,发现是MEDIA_ROOT的问题

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')# 连接media到根目录 /qiuzhiquan/media/interview/%Y/%m

MEDIA_ROOT 代表着 要上传的路径会和你在models中写的上传的路径进行拼节形成最终文件上传的路径 
MEDIA_URL 主要就是映射了在前端使用 media_url 当你的MEDIA_ROOT 发生改变的时候不用去更改前端模板中的内容
如果MEDIA_ROOT设定的是字典,url跳转也没加[0],就会报错

借鉴:Django的STATIC_URL、STATIC_ROOT、STATICFILES_DIRS、MEDIA_URL、MEDIA_ROOT意义、设置和使用

发布了6 篇原创文章 · 获赞 0 · 访问量 89

猜你喜欢

转载自blog.csdn.net/qq_42091101/article/details/104106257