首页 > 解决方案 > 通过表单在 Django 中创建用户

问题描述

我想在 Django 中有一个用户注册表单,我知道对于后端我应该有这样的东西:

>>> from django.contrib.auth.models import User
>>> user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')


>>> user.last_name = 'Lennon'
>>> user.save()

但是,我不知道如何制作前端。我已经在 Django 文档中查找并找到了UserCreationForm 类,它说它已被弃用。我应该怎么办?谢谢

标签: djangodjango-formsdjango-authentication

解决方案


尝试这样的事情:

#forms.py

class UserCreationForm(forms.ModelForm):
    """A form for creating new users. Includes all the required
fields, plus a repeated password."""
password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)

class Meta:
    model = MyUser
    fields = ('email', 'date_of_birth')

def clean_password2(self):
    # Check that the two password entries match
    password1 = self.cleaned_data.get("password1")
    password2 = self.cleaned_data.get("password2")
    if password1 and password2 and password1 != password2:
        raise ValidationError("Passwords don't match")
    return password2

def save(self, commit=True):
    # Save the provided password in hashed format
    user = super().save(commit=False)
    user.set_password(self.cleaned_data["password1"])
    if commit:
        user.save()
    return user

您应该阅读Django 文档中有关身份验证的这一部分。


推荐阅读