首页 > 解决方案 > 自定义用户模型认证表单修改

问题描述

我创建了自己的用户模型,它使用电子邮件作为用户名,我决定使用自己的视图。因此,我创建了用户身份验证表单。它工作得很好,但有一个问题:它在 HTML 输出中将输入类型标记为“文本”,但我需要将其标记为“电子邮件”

我试图通过更新小部件属性来覆盖“__init__”函数,但它只适用于“占位符”、“id”和其他标签,修改“用户名”也不起作用

class CustomUserAuthForm(AuthenticationForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['username'].widget.attrs.update({'type': 'email', 'placeholder': 'e-mail'})
        self.fields['password'].widget.attrs['placeholder'] = 'password'
self.username = forms.EmailField(widget=forms.EmailInput(attrs={'autofocus': True, 'type': 'email', 'placeholder': 'e-mail'}))

我想得到:

<input type="email" name="username" autofocus="" placeholder="e-mail" required="">

但我得到:

<input type="text" name="username" autofocus="" placeholder="e-mail" required="">

标签: pythondjango

解决方案


推荐阅读