我创建了自己的用户模型,该模型使用电子邮件作为用户名,因此我决定使用自己的视图。因此,我创建了用于用户身份验证的表单。效果很好,但是有一个问题:在HTML输出中将 input 类型标记为“文本” ,但是我需要将其标记为“电子邮件”
我试图通过更新窗口小部件属性来覆盖“ __ 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="">