This question already has answers here:
How can I convert a python urandom to a string?
(3个答案)
去年关门了。
我试图将urandom值存储到我的Django项目的mySQL数据库中。出于加密目的,该值必须完全随机。
我试了好几个小时,真的很沮丧。我在谷歌上搜索了一些答案,但解决办法行不通。
如果我按照这里的建议尝试这个Store os.urandom variable to Sqlite database in Django
... 我收到这个错误信息
我也在比纳西图书馆试过
os.urandom() decoding Issue
这样地
通过上面的内容,我得到了一条错误消息:
我使用的是Python 3.6、Django 1.11.5和MySQL数据库。
有没有办法把天王星的价值存储到Django模型中?我想把它储存在一个沙菲尔德,但我也很高兴,如果它与其他领域的工作。
放下
然后,在对
所以,你需要的是:
在视图级别调用
这将解决您的
如果不复制你所拥有的,我有一点怀疑你甚至可以做到以下几点:
你甚至可以逃脱一个
其中,上面的
(3个答案)
去年关门了。
我试图将urandom值存储到我的Django项目的mySQL数据库中。出于加密目的,该值必须完全随机。
我试了好几个小时,真的很沮丧。我在谷歌上搜索了一些答案,但解决办法行不通。
如果我按照这里的建议尝试这个Store os.urandom variable to Sqlite database in Django
def createkey():
random_bytes = urandom(16)
return b64encode(random_bytes)
key = models.BinaryField(max_length=16, default=createkey)
... 我收到这个错误信息
django.db.utils.OperationalError: (1067, "Invalid default value for 'key'")
我也在比纳西图书馆试过
os.urandom() decoding Issue
这样地
def createkey():
return binascii.hexlify(urandom(16)).decode()
通过上面的内容,我得到了一条错误消息:
string argument without an encoding
我使用的是Python 3.6、Django 1.11.5和MySQL数据库。
有没有办法把天王星的价值存储到Django模型中?我想把它储存在一个沙菲尔德,但我也很高兴,如果它与其他领域的工作。
最佳答案
我会尝试这样做:
_key = models.BinaryField(blank=True)
放下
max_length=16
,因为这与urandom(16)
不匹配。。。urandom参数对应于最大字节数。然后,在对
Model
调用的createkey方法中……您希望将值保存到数据库,而不仅仅是返回值。只有在对Modal
实例调用时,才能访问返回值。。。。例如,Modal.createkey()
。所以,你需要的是:
def createkey():
self._key = binascii.hexlify(urandom(16)).decode()
在视图级别调用
createkey()
方法。这将解决您的
invalid default value for key
错误。如果不复制你所拥有的,我有一点怀疑你甚至可以做到以下几点:
def createkey():
random_bytes = urandom(16)
return b64encode(random_bytes)
key = models.BinaryField(blank=True, default=self.createkey)
你甚至可以逃脱一个
CharField
:key = models.CharField(max_length = x)
其中,上面的
x
是块大小*2,用于保存十六进制数据,或4*(块大小/3),用于base64数据。对于您的特定示例,块大小为16。关于python - Django模型中的urandom/mySQL数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52030155/
10-14 00:18