Как сделать поле 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'