我是django的新手,使用django需要用户名和密码的UserRegistrationForm创建注册表。我想用电子邮件代替用户名。我该怎么做?
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request,f'Account Created For {username} !')
return redirect('starting-page')
else:
form = UserRegisterForm()
return render(request,'users/register.html',{'form': form})
将email
用作username
的第一步是通过扩展AbstractBaseUser
来定制User
模型,类似于以下内容:
from django.contrib.auth.models import AbstractUser, PermissionsMixin
from django.utils.translation import gettext_lazy as _
...
class CustomUser(AbstractBaseUser, PermissionsMixin):
first_name = models.CharField(_('first name'), max_length=150, blank=True)
last_name = models.CharField(_('last name'), max_length=150, blank=True)
email = models.EmailField(_('email address'), unique=True)
...
USERNAME_FIELD = 'email'
然后,在settings.py
中,您必须设置自定义模型用户:
AUTH_USER_MODEL = 'your_app.CustomUser'
您可以查看Django Registrations文档,根据您的工作流程查看有关某些必需字段或方法的任何特定信息。