gpt4 book ai didi

python - 如何扩展 Django "login"表单?

转载 作者:太空狗 更新时间:2023-10-29 17:26:23 25 4
gpt4 key购买 nike

所以,现在我正在进行基本登录。在 urls.py 中,我转到 django contrib 登录:

(r'^login/?$','django.contrib.auth.views.login',{'template_name':'login.html'}),

把它射到这里:

@csrf_protect
@never_cache
def login(request, template_name='registration/login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
authentication_form=AuthenticationForm):

该 View 使用 AuthenticationForm 表单模型:

class AuthenticationForm(forms.Form):
"""
Base class for authenticating users. Extend this to get a form that accepts
username/password logins.
"""
username = forms.CharField(label=_("Username"), max_length=30)
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)

所以...我的目标是更改用户名表单!通过向其中添加:widget = forms.TextInput(attrs={'placeholder': 'username'})。而已。这就是我要添加到用户名输入框的所有内容。但是,我不想更改实际的 django forms.py 文件,因为那是 django contrib 的一部分,我觉得更改该文件很不好。

我该怎么办?我应该创建一个扩展 AuthenticationForm 的表单吗?如果是这样,我该如何导入?我如何通过我的 urls.py 将其作为参数传递?我不知道该怎么办。

最佳答案

您需要子类化 AuthenticationForm 类,然后您需要更改您的 urls.py

class MyAuthenticationForm(AuthenticationForm):
# add your form widget here
widget = .....

然后将此类导入到您的urls.py 文件中并更新调用,

(r'^login/?$','django.contrib.auth.views.login',{'template_name':'login.html', 'authentication_form':MyAuthenticationForm}),

我太累了,无法在文档站点上查找链接以查看您需要使用哪种类型的字段,但这应该可以帮助您入门而无需修改 django forms.py,你绝对应该对改变感到难过!

关于python - 如何扩展 Django "login"表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4643884/

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