为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Django 中的 BinaryField 获取字节?

如何从 Django 中的 BinaryField 获取字节?

函数式编程 2021-09-28 17:53:14
考虑我们有一个模型BinaryField:from django.db import modelsimport hashlibclass Target(models.Model):    # ...    image = models.BinaryField(max_length=(1<<24)-1)    # ...    def __str__(self):        return hashlib.md5().update(self.image).hexdigest()上面的代码是否正确计算了图像的 MD5 摘要?或者里面是否有一些方法或变量BinaryField来获取传递给update()方法的内存?更新:当我尝试:>>> from pathlib import Path>>> t = Target(image=Path('../../Experiments/LoginError2.jpg').read_bytes())>>> t我收到以下错误:AttributeError: 'NoneType' object has no attribute 'hexdigest'那么我做错了什么?
查看完整描述

2 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

所以这里的结论是:BinaryField可以分配字节,也可以作为字节读取。

在上面的代码中,散列是错误的,正确的方法是:

hashlib.md5(self.image).hexdigest()


查看完整回答
反对 回复 2021-09-28
?
POPMUISE

TA贡献1765条经验 获得超5个赞

关于您关于 的更新AttributeError,您hexdigest()错误地调用了该方法。


问题是,update()方法返回None,和你几乎试图调用hexdigest()上None。像这样的链接方法调用仅在前一个方法返回实际对象而不是None.


您必须分多个步骤执行此调用:


def __str__(self):

    m = hashlib.md5()

    m.update(self.image)

    return m.hexdigest()



查看完整回答
反对 回复 2021-09-28
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信