gpt4 book ai didi

python - 如何使LoginView(FormView)的Django用户名字段小写?

转载 作者:行者123 更新时间:2023-12-03 08:07:30 25 4
gpt4 key购买 nike

我已经做到了,任何使用用户名注册的用户都会自动将其用户名转换为小写。 user/forms.py

我现在遇到一个问题,我无法找到一种方法将登录表单中的用户名在提交时转换为较低的用户名。因为我仍然希望用户能够在他们选择的情况下输入他们的名字。

我已经在 LoginView 中的一些内容上尝试了 python tolower() 函数,但没有成功。如果有人知道我如何实现这一目标,请告诉我。

这是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()

然后将该表单注入(inject)到 LoginView 中:

from app_name.forms import <b>MyAuthenticationForm</b>

# …

path('login/',
auth_view.LoginView.as_view(
<b>form_class=MyAuthenticationForm</b>,
template_name='user/login.html'
),
name='login'
)

关于python - 如何使LoginView(FormView)的Django用户名字段小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71719199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com