Как сделать поле Django username в LoginView(FormView) строчным?

Я сделал так, что любой пользователь, который регистрируется с именем пользователя, автоматически преобразует свое имя пользователя в нижний регистр. user/forms.py

Теперь у меня возникла проблема, когда я не могу найти способ преобразовать имя пользователя в форме входа, чтобы оно становилось ниже при отправке. Поскольку я все еще хочу, чтобы пользователь мог ввести свое имя в выбранном им регистре.

Я пробовал использовать функцию python tolower() для нескольких вещей в LoginView, но безуспешно. Если у кого-нибудь есть идея, как я могу этого добиться, пожалуйста, дайте мне знать.

Вот user/forms.py

class UserSignupForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ["username", "email", "password1", "password2"]

    def clean_username(self):
        username = self.cleaned_data["username"].lower()

        if not re.match(r"^[A-Za-z0-9_]+$", username):
            raise forms.ValidationError(
                "Sorry , you can only have alphanumeric, _ or - in username"
            )
        else:
            return username

Вот user/urls.py

path("signup/", user_view.signup, name="signup"),
path("login/",auth_view.LoginView.as_view(template_name="user/login.html"),name="login"),

Вы можете подклассифицировать AuthenticationForm:

# app_name/forms.py

from django.contrib.auth.forms import AuthenticationForm

class MyAuthenticationForm(AuthenticationForm):

    def clean_username(self):
        return self.cleaned_data['username'].lower()

затем вы вводите эту форму в LoginView:

from app_name.forms import MyAuthenticationForm

# …

path('login/',
    auth_view.LoginView.as_view(
        form_class=MyAuthenticationForm,
        template_name='user/login.html'
    ),
    name='login'
Вернуться на верх