django Python:名称“set_password”未定义

chy5wohz  于 2023-02-10  发布在  Go
关注(0)|答案(1)|浏览(146)

我试图注册用户散列他们的密码之前添加到数据库如下

    • 设置. py**
PASSWORD_HASHERS = (
    'django.contrib.auth.hashers.MD5PasswordHasher',
)
    • 型号. py**
from django.contrib.auth.models import AbstractBaseUser

class Users(AbstractBaseUser):
    name = models.CharField(max_length=200)
    email =  models.CharField(max_length=200)
    password =  models.CharField(max_length=255)
    • 浏览次数. py**
name = form.cleaned_data.get('name')
email = form.cleaned_data.get('email')
password = form.cleaned_data.get('password')
date_joined = date.today()

if Users.objects.filter(email=email).exists() and Users.objects.filter(name=name).exists() :
    messages.info(request, 'User already exists')
else:
    Users.objects.create(name=name, email=email, password=set_password(password), date_joined=date_joined)

但是当我实际尝试创建用户时,我得到了Python : name 'set_password' is not defined,怎么了?我需要在Views.py导入一些东西吗?

wfsdck30

wfsdck301#

必须在用户示例上使用set_password(),而不是在创建用户时使用。
试试这个:

user = Users.objects.create(first_name=name, email=email, date_joined=date_joined)
user.set_password(password)
user.save()

我可以看到你正在扩展用户模型。我想看看一些文章来了解如何做到这一点,我推荐这个article

相关问题