Django : Как я могу войти в систему по электронной почте вместо имени пользователя

Я хочу сделать так, чтобы email устанавливался во фронтенде django-приложения

1/Я пошел и создал этот класс, чтобы сделать аутентификацию на основе электронной почты

class EmailBackend(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        UserModel = get_user_model()
        try:
            user = UserModel.objects.get(email=username)
        except UserModel.DoesNotExist:
            return None
        else:
            if user.check_password(password):
                return user
        return None
        
    def get_user(self, user_id):
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExist:
            return None

2/ затем я должен пойти и определить путь этого класса в settings.py

3/ все хорошо без ошибок и я вошел в систему, введя email, Но во фронтенде все еще ярлык "Имя пользователя", Как я могу изменить его, пожалуйста. введите описание изображения здесь

Вот Html код form страница входа:

<form method="POST">
            {% csrf_token %} <!--this protect our form against certeain attacks ,added security django rquires-->
            <fieldset class="form-group">
              {{ form|crispy}} 
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Login</button>
                <small class="test-muted ml-2">
                   <a class="ml-2" href="{% url 'password_reset' %}">Forgot Password?</a>
                </small> 
            </div>
            <!--- put div for a link if he is already have account--->
            <div class="border-top pt-3">
                <small class="test-muted">Need an account? <a class="ml-2" href="{% url 'register' %}">Sign Up</a></small> 
                <!--it a bootstrap -->
            </div>
        </form>

Заранее спасибо.

Возможно, вам следует изменить форму

urlpatterns = [
   path('login/', LoginView.as_view(authentication_form=YourForm), name='login'),
]

class YourForm(AuthenticationForm):
    username = forms.CharField(widget=TextInput(attrs={'class':'validate','placeholder': 'Username or Email'}))
    password = forms.CharField(widget=PasswordInput(attrs={'placeholder':'Password'})
Вернуться на верх