小白记录:
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意义、设置和使用