如何在 django 中生成随机数
Posted
技术标签:
【中文标题】如何在 django 中生成随机数【英文标题】:How to generate random numbers in django 【发布时间】:2011-09-15 06:19:14 【问题描述】:我想在一个空白字段中生成自动随机数,同时将它保存在 django 中。
编辑
随机数必须是唯一的。
【问题讨论】:
随机数需要唯一吗? 是的,它一定是独一无二的,maz 我刚刚用一个可以让您创建唯一随机数的解决方案更新了我的答案。让我知道这是否有效。 【参考方案1】:简单地说,我在 python 中通过 random.randint 做了一个随机数。然后因为我需要唯一的数字,所以我向数据库查询这个数字,如果这个数字已经存在,那么我通过 while 循环再次随机。
random_num = random.randint(2345678909800, 9923456789000)
uniqe_confirm = Order.objects.filter(order_id=random_num)
while uniqe_confirm:
random_num = random.randint(2345678909800, 9923456789000)
if not Order.objects.filter(order_id=random_num):
break
【讨论】:
可能不是一个好主意。这不会扩展。【参考方案2】:编辑:更改解决方案以使随机数唯一并使用 Django 的 make_random_password
功能。请注意,以下假设您将随机数存储在名为
的字段中模型 UserProfile 中的 temp_password,它是 User 模型的扩展。
random_number = User.objects.make_random_password(length=10, allowed_chars='123456789')
while User.objects.filter(userprofile__temp_password=random_number):
random_number = User.objects.make_random_password(length=10, allowed_chars='123456789')
另请注意,您也可以将随机代码存储为字母和数字的组合。
allowed_chars 的默认值是一串字母和数字减去一些容易导致的字符
用户之间的混淆(1、l 等)
更多关于 Django 的 make_random_password 函数: https://docs.djangoproject.com/en/dev/topics/auth/#manager-functions
旧:
import random
n = random.randint(a,b) # returns a random integer
在上面的例子中 a
随机类中更多类型的随机数: http://docs.python.org/library/random.html
【讨论】:
你的算法正是我在这里寻找的。与其说是如何生成随机数,不如说是如何确保它们的唯一性。太棒了,虽然我不知道它的效率如何。如果 User 表变得非常大,事情可能会变得有点慢......但无论如何我都看不到。【参考方案3】:这更像是一个 python 的东西而不是一个 django 的东西。
你可以找到关于随机类here的所有信息
祝你好运!
【讨论】:
谢谢。我已经生成成功了以上是关于如何在 django 中生成随机数的主要内容,如果未能解决你的问题,请参考以下文章