如何在用户注册时生成幻数并将其填充到数据库中?

2024-05-14 09:35:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我在寻找一种方法,分配一个随机生成的数字字母组合给一个用户在我的页面上注册

因此,如果一个用户在我的网站上注册,将有一个随机生成的数字字母组合(我们称之为magic number)分配给这个用户,并填充到PostgreSQL用户表中

是否有一个共同的方法来这样做

我是否必须在现有类中定义此类函数,或者是否存在不同的工作流

这是我的model(继承自Djangos AbstractUser模型):

from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    pass
    first_name = models.CharField(max_length=500, blank=False)
    last_name = models.CharField(max_length=30, blank=False)

    def __str__(self):
        return self.username

Tags: django方法用户namefromimportfalsemodels
1条回答
网友
1楼 · 发布于 2024-05-14 09:35:05

Is there a common approach to do so?

看起来您想要的是与Universally Unique Identifier (UUID) [wiki]相关的东西,它是一个128位的数字,通常用十六进制表示法表示。如果两台(或多台)服务器需要分配应该是唯一的ID,但它们不知道另一台服务器已经分配的ID,则通常使用此方法。严格来说,两台服务器可能生成相同的UUID。但是,要产生大约2.71×1018个数字,就有50%的几率存在两个相同的UUID,这看起来相当大,可以假设不会发生

Django的最新版本有一个^{} [Django-doc],它可以帮助您使用UUID。如文件所述,您可以将其用于:

import uuid
from django.db import models

class MyUUIDModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

请注意,您本身不需要将其作为主键。您还可以将其用作与主键一起使用的额外唯一值(例如,slug有时也用于此目的):

import uuid
from django.db import models

class MyUUIDModel(models.Model):
    uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)

例如,如果您希望使用^{} [Django-doc],那么您可能希望使用原始主键。因为以其他方式引用使用UUIDFieldAutoField的两个模型可能会很麻烦

相关问题 更多 >

    热门问题