这个问题在这里已经有答案了:
如何将python对象转换为字符串(4个答案)
两年前关门了。
我正在尝试将一个urandom值存储到我的django项目的mysql数据库中。出于加密目的,该值必须是完全随机的。
我努力了好几个小时,我真的很沮丧。我在谷歌上搜索了一些答案,但解决方案不起作用。
如果我像这里建议的那样尝试将os.urandom变量存储到django中的sqlite数据库中
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'")
我还用binascii库os.urandom()尝试了如下解码问题
def createkey():
return binascii.hexlify(urandom(16)).decode()
通过以上步骤,我得到以下错误消息:
string argument without an encoding
我使用的是python3.6、django1.11.5和mysql数据库。
有没有办法把铀的价值存储到django模型中?我想把它存储在一个charfield,但我也很高兴如果它与其他领域的工作。
1条答案
按热度按时间nkcskrwz1#
我会尝试这样做:
放下枪
max_length=16
因为这和urandom(16)
... urandom参数对应于最大字节数。然后,在
Model
…您希望将值保存到数据库,而不是简单地返回值。只有在Modal
示例。。。。例如。,Modal.createkey()
.所以,你会想要更像:
打电话给你的朋友
createkey()
方法。这会解决你的问题
invalid default value for key
错误。在没有实际复制你所拥有的东西的情况下,我有一点怀疑,你甚至可以做到以下几点:
你甚至可以逃脱
CharField
:哪里
x
上面是块大小2来保存十六进制数据,或者4(块大小/3)来保存base64数据。对于您的具体示例,块大小是16。