我正在使用uuid.uuid4().hex来生成随机唯一的密钥,我想使用它作为一个key来重置密码。
有一个场景,多个用户试图请求更改密码,我正在体验IntegrityError,因为key正在复制。
我知道这是非常不喜欢的,uuid.uuid4().hex基因的复制键,但在这个场景,一个种族宽容的请求,他们的关键是被复制。
我已经想出了几种方法,但我不知道哪一种更好。
试/除
saved = false
while not saved:
key = uuid.uuid4().hex
try:
reset_password_object.key = key
reset_password_object.save()
saved = True
except IntegrityError:
key = uuid.uuid4().hex 基于模型的滤波器
发现=真
while found:
key = uuid.uuid4().hex
found = ResetPassword.objects.filter(key=key).count()然后使用这个键添加一个新条目。
还有什么其他的可能性呢?谢谢。
发布于 2015-04-17 10:18:12
如果我在你的位置,我会再生一些10K或20K键在使用之前。会把它们储存在红葡萄酒里。
这样你的程序就会优化。
https://stackoverflow.com/questions/29693053
复制相似问题