我已经创建了一个基本的CMS,下一步是添加图片上传功能。我在models.py中添加了几行,然后由于UnicodeDecodeError而使我的模型无法验证:
在线程开始由未处理的异常 回溯(最近通话最后一个): 文件“C:\ Python27 \ LIB \站点包\ Django的\ utils的\ autoreload.py”,第93行,以W 说唱歌手 FN(* ARGS,** kwargs ) 在inner_run self.validate(display_num_errors = True)中的第101行的 文件“ C:\ Python27 \ lib \ site-packages \ django \ core \ management \ commands \ runserver.py ”中, 文件“ C:\ Python27 \ lib \ site -packages \ django \ core \ management \ base.py“,行310, 验证 num_errors = get_validation_errors(s,app) 文件“ C:\ Python27 \ lib \ site-packages \ django \ core \ management \ validation.py” ,lin line 113,出现在get_validation_errors中 从django.utils.image导入图像 文件“ C:\ Python27 \ lib \ site-packages \ django \ utils \ image.py”,第154行,在 Image,_imaging,ImageFile = _detect_image_library() 文件中“ C:\ Python27 \ lib \ site-packages \ django \ utils \ image.py“,第134行,位于_dete ct_image_library ” imported:%s“)中%err 文件” C:\ Python27 \ lib \ site-packages \ django \ utils \ functional.py “,第168行,在 __mod__中 返回six.text_type(self)%rhs UnicodeDecodeError:'ascii'编解码器无法解码位置35的字节0xb3:序数 不在范围内(128)
这是我的models.py代码:
从django.db导入模型 从django.contrib.auth.models导入用户 ... 类Photo(models.Model): title = models.CharField (max_length = 255)upload_path ='/' photo = models.ImageField(upload_to = upload_path) def __unicode __(self): 返回self.title
我有Python 2.7.6,Django 1.6.1,MySQL-python-1.2.3。
有人知道异常发生的原因吗?
您的问题可能是您的unicode方法没有真正返回unicode。
应该是这样的
def __unicode__(self):
return u'%s' % self.title
如果您说这不能解决您的错误,那么您是正确的。我去看了Django代码,发现错误是在其他地方生成的。不过,您的unicode方法应该返回unicode,而不返回其他任何内容。
现在该错误了:django尝试导入您的映像库的地方出现了该错误。从我所看到的,当引发错误时会出现错误。
您无法修复,但是您可以执行的操作是检查是否已安装所需的映像库。失败的代码(并生成原始错误)是:
import _imaging as PIL_imaging
修复它(最有可能)的方法是从计算机上删除PIL(如果有的话)并安装PILLOW。如果您阅读了1.6发行说明:https : //docs.djangoproject.com/en/dev/releases/1.6/您会看到,那个枕头现在是Django首选的图像处理库。
从链接的页面复制:Pillow现在是与Django一起使用的首选图像处理库。PIL正在待弃用(在Django 1.8中将不再支持)。要升级,您应该先卸载PIL,然后再安装Pillow。
去那里,按照说明卸载PIL和安装PILLOW,然后重试您的代码。
编辑您实际上不需要卸载/删除PIL。删除它可能会导致诸如ubuntu之类的问题,其中gnome3桌面显然需要PIL ...
/编辑
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句