gpt4 book ai didi

python - Unicode 警告 : Unicode equal comparison failed to convert both arguments to Unicode

转载 作者:行者123 更新时间:2023-11-29 05:27:16 26 4
gpt4 key购买 nike

这是我转到相关 View 时遇到的完整错误。

/Library/Python/2.7/site-packages/django/core/files/base.py:106: UnicodeWarning: Unicode 相等比较未能将两个参数转换为 Unicode - 将它们解释为不相等
如果 ('\n', '\r') 中的第 [-1] 行:

代码非常简单。这是在我的 views.py 中

def my_image(request):
clothes = Clothes.objects.get(clothesid = '2')
get_image = clothes.image
return HttpResponse(get_image, mimetype="image/png")

这是在我的 models.py 中

image = models.FileField(upload_to='images/')

完整的衣服模型如下所示:

class Clothes(models.Model):
clothesid = models.IntegerField(primary_key=True)
clothessize = models.CharField(max_length=255L, blank=True)
clothescolour = models.CharField(max_length=255L, blank=True)
clothestype = models.CharField(max_length=255L, blank=True)
image = models.FileField(upload_to='images/')
url = models.CharField(max_length=255L, blank=True)
gender = models.CharField(max_length=1L, blank=True)
clothescategory = models.CharField(max_length=255L, blank=True)
clothesage = models.CharField(max_length=255L, blank=True)

class Meta:
db_table = 'Clothes'

def __unicode__(self):
return self.image.name

在 MySQL 中,图像字段被整理为 latin1_swedish_ci 以防出现问题。

这里有什么问题?

最佳答案

您将 FileField image 返回的值直接传递到响应中,就像它是字符串或可迭代对象一样。检查 source code对于给定的异常路径,我们看到该字段返回的对象在其 __iter__ 方法中有违规行——包装类正在寻找行终止符。原始图像文件可能包含无法转换为可与行终止符进行比较的字节,这当然是合理的。

HttpResponse 只需要一些可以将其视为字符串的东西 - 如果您给它一个迭代器,它会立即读取所有内容并创建一个字符串,因此不会节省内存:

HttpResponse will consume the iterator immediately, store its content as a string, and discard it.

https://docs.djangoproject.com/en/dev/ref/request-response/#passing-iterators

因此,您需要一些东西来提取图像文件包装器对象的内容,而无需通过迭代接口(interface)。 read方法就是这样做的,如果你不给它一个字节数参数,就会提取文件的全部内容。因此,我首先要尝试的是:

return HttpResponse(get_image.read(), mimetype="image/png")

这是未经测试的,所以我可能忽略了一些东西。

您也可以尝试分析更简单的情况,即让您的托管 Web 服务器处理图像,并只提供重定向到 URL 的服务。从 FileField 返回。这将涉及一个额外的 HTTP 往返行程来告诉浏览器去哪里看,所以我不认为对于哪种方法会更快有一个通用的规则。

关于python - Unicode 警告 : Unicode equal comparison failed to convert both arguments to Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18756205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com