gpt4 book ai didi

python - 如何让 Django 使用电子邮件而不是用户名注册用户

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:05 25 4
gpt4 key购买 nike

我正在尝试制作一个使用名字、姓氏、电子邮件和密码注册用户的网站。我已经尝试编写此表单并在 View 中使用它

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm


class RegisterationForm(UserCreationForm):
email = forms.EmailField(required=True)

class Meta:
model = User
fields = (
'first_name',
'last_name',
'email',
'password1',
'password2',
)

def save(self, commit=True):
user = super(RegisterationForm, self).save(commit=False)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']

if commit:
user.save()
return user

并在 View 中使用它

from django.shortcuts import render, redirect
from Users.forms import RegisterationForm
from django.contrib.auth import authenticate, login




def home(request):
return render(request, 'Users/index.html')


def register (request):
if request.method == 'POST':
form = RegisterationForm(request.POST)
if form.is_valid():
form.save()
return redirect('/map_page/')
else:
form = RegisterationForm()
args = {'form': form}
return render(request, 'Users/index.html', args)

但是当我这样做并填写它时,我得到一个错误UNIQUE 约束失败:auth_user.username

我想知道是否有一种方法可以不使用用户名并让他们使用密码和电子邮件注册和登录。

我尝试制作一个后端并将其包含在设置中,但没有成功。然后我也尝试使用自定义模型并将其包含在 admin.py 中。我还将它包含在设置中,但它给我带来了奇怪的错误。

如何以简单的方式使用电子邮件而不是用户名注册用户?

最佳答案

我认为最简单的解决方法是设置 user.username = user.email

这个问题主要是由于用户名为空引起的,这对第一个用户来说没问题,但对第二个用户来说是唯一的失败。

另一种选择是从用户模型中删除字段用户名。

https://docs.djangoproject.com/en/2.0/topics/auth/customizing/


自定义用户类(用户):
用户名 = 无

关于python - 如何让 Django 使用电子邮件而不是用户名注册用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48605384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com