如何在 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 中生成随机数的主要内容,如果未能解决你的问题,请参考以下文章

如何在Javascript中生成随机数[重复]

如何在 C++ 中生成随机数?

如何在 Dart 中生成随机数?

swift 如何在swift中生成随机数?

如何在 Elixir 中生成随机数?

如何在 BusyBox shell 中生成随机数