'How to use email as username for Django registration
I am new to django and creating registration form using django's UserRegistrationForm, which requires username and password . I want to use email instead of username. How I can do this?
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})
Solution 1:[1]
First step to use email as username is to customize User model by extending AbstractBaseUser, something like this:
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'
Then, in your settings.py, you have to set your custom model user:
AUTH_USER_MODEL = 'your_app.CustomUser'
You can take a look at the Django Registrations docs to see any particular information on some of the required fields or methods depending on your workflow.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
