Python Django-';TypeError:应为字符串或字节,如object';使用Cloudinary清除上载的图像时
我在Django应用程序中使用Cloudinary来存储和服务用户在我网站的一个视图中上传的图像。图像被上传并正确显示;但是,在my UpdateView中,当用户选中“清除”以删除以前的图像,然后提交表单时,会显示此错误: TypeError:应为字符串或类似字节的对象 浏览器中的错误页面还显示以下突出显示的消息: …\lib\site packages\cloudinary\models.py在python中 返回self.parse_cloudinary_资源(值) …\lib\site packages\cloudinary\models.py位于parse\u cloudinary\u资源中 m=重新匹配(CLOUDINARY\u字段\u DB\u re,值) …\AppData\Local\Programs\Python\Python36-32\lib\re.py处于匹配状态 返回编译(模式、标志)。匹配(字符串) 以下是我的模型、视图和表单的外观: models.py:Python Django-';TypeError:应为字符串或字节,如object';使用Cloudinary清除上载的图像时,python,django,file-upload,django-class-based-views,cloudinary,Python,Django,File Upload,Django Class Based Views,Cloudinary,我在Django应用程序中使用Cloudinary来存储和服务用户在我网站的一个视图中上传的图像。图像被上传并正确显示;但是,在my UpdateView中,当用户选中“清除”以删除以前的图像,然后提交表单时,会显示此错误: TypeError:应为字符串或类似字节的对象 浏览器中的错误页面还显示以下突出显示的消息: …\lib\site packages\cloudinary\models.py在python中 返回self.parse_cloudinary_资源(值) …\lib\site
class Item(models.Model):
name = models.CharField(max_length=255)
image1 = CloudinaryField('image', blank=True, null=True)
views.py
class ItemUpdateView(LoginRequiredMixin, UpdateView):
model = models.Item
form_class = forms.ItemForm
forms.py
class ItemForm(forms.ModelForm):
image1 = CloudinaryFileField(
required=False,
options = {'crop': 'limit', 'width': 546, 'height': 1000,})
class Meta:
model = models.Item
fields = ("image1", "name")
我认为当字段值为空时,Cloudinary仍在期待一些东西。我看了文档,搜索了网页,但我就是不知道如何解决这个问题
编辑:我检查了我的管理员并试图从那里编辑一个项目,当我选中“清除”复选框并点击保存时,出现了相同的错误。因此,问题似乎在于我如何在模型上创建image1字段,因为Admin视图将仅依赖于此。但我仍然不知道如何修复它
Edit2:当我在“图像”字段上选中“清除”并单击“保存”时的完整回溯,来自管理员:
环境:
请求方法:发布请求URL:
Django版本:1.11.1 Python版本:3.6.1已安装的应用程序:
['django.contrib.admin'
“django.contrib.auth”
“django.contrib.contenttypes”
“django.contrib.humanize”
“django.contrib.sessions”
“django.contrib.messages”
“django.contrib.staticfiles”
“django.contrib.sites”
“阴云密布”
“阿拉斯”
“allauth.账户”
“allauth.socialaccount”
'allauth.socialaccount.providers.google'
“allauth.socialaccount.providers.twitter”
“干草堆”
“项目”]
已安装的中间件:
['django.middleware.security.SecurityMiddleware'
'django.contrib.sessions.middleware','django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.xframeoptions中间件'] 回溯: 文件 “D:\projects\django\gia\lib\site packages\django\core\handlers\exception.py” 在内部 41响应=获取响应(请求) 文件 “D:\projects\django\gia\lib\site packages\django\core\handlers\base.py” 你得到了什么回应 187response=self.process\u异常\u由\u中间件(e,请求) 文件 “D:\projects\django\gia\lib\site packages\django\core\handlers\base.py” 你得到了什么回应 185响应=包装的回调(请求,*回调参数,**回调参数) 文件 “D:\projects\django\gia\lib\site packages\django\contrib\admin\options.py” 包装中 551返回self.admin\u site.admin\u视图(视图)(*args,**kwargs) 文件 “D:\projects\django\gia\lib\site packages\django\utils\decorators.py” 在视图中 149响应=查看功能(请求,*args,**kwargs) 文件 “D:\projects\django\gia\lib\site packages\django\views\decorators\cache.py” 在_wrapped_view_func中 57响应=查看功能(请求,*args,**kwargs) 文件 “D:\projects\django\gia\lib\site packages\django\contrib\admin\sites.py” 在内部 224返回视图(请求、*args、**kwargs) 文件 “D:\projects\django\gia\lib\site packages\django\contrib\admin\options.py” 改变看法 1511返回self.changeform\u视图(请求、对象id、表单url、额外上下文) 文件 “D:\projects\django\gia\lib\site packages\django\utils\decorators.py” 内包装 67返回边界函数(*args,**kwargs) 文件 “D:\projects\django\gia\lib\site packages\django\utils\decorators.py” 在视图中 149响应=查看功能(请求,*args,**kwargs) 文件 “D:\projects\django\gia\lib\site packages\django\utils\decorators.py” 内界函数 63返回函数获取(self,键入(self))(*args2,**kwargs2) 文件 “D:\projects\django\gia\lib\site packages\django\contrib\admin\options.py” 在变换形式的视图中 1408返回self.\u changeform\u视图(请求、对象id、表单url、额外上下文) 文件 “D:\projects\django\gia\lib\site packages\django\contrib\admin\options.py” 在\u changeform\u视图中 1440如果form.is_有效(): 文件“D:\projects\django\gia\lib\site packages\django\forms\forms.py” 这是有效的吗 183返回self.is_绑定而不是self.errors 文件“D:\projects\django\gia\lib\site packages\django\forms\forms.py” 出错 175self.full_clean() 文件“D:\projects\django\gia\lib\site packages\django\forms\forms.py” 干干净净 386自我清洁 文件“D:\projects\django\gia\lib\site packages\django\forms\models.py” 后清洁 396self.instance.full\u clean(exclude=exclude,validate\u unique=False) 文件 中的“D:\projects\django\gia\lib\site packages\django\db\models\base.py” 完全清洁 1226
if request.method == 'POST':
if picture_form_set.is_valid():
def clean_picture(self):
return self.cleaned_data['picture'] or None
class CloudinaryFieldFix(CloudinaryField):
def to_python(self, value):
if value is False:
return value
else:
return super(FixCloudinaryField, self).to_python(value)