有谁知道如何关闭Django文本框的自动填充功能?在Django中的文本框禁用自动完成功能?
例如,我从我的模型生成的表单具有信用卡号的输入字段。自动完成是不好的做法。当手动创建表单时,我会添加一个autocomplete =“off”语句,但是如何在Django中完成并仍保留表单验证?
有谁知道如何关闭Django文本框的自动填充功能?在Django中的文本框禁用自动完成功能?
例如,我从我的模型生成的表单具有信用卡号的输入字段。自动完成是不好的做法。当手动创建表单时,我会添加一个autocomplete =“off”语句,但是如何在Django中完成并仍保留表单验证?
在您的表单中,指定您想要用于该字段的小部件,并在该小部件上添加一个attrs
字典。例如(直接从django documentation):
class CommentForm(forms.Form):
name = forms.CharField(
widget=forms.TextInput(attrs={'class':'special'}))
url = forms.URLField()
comment = forms.CharField(
widget=forms.TextInput(attrs={'size':'40'}))
只需添加'autocomplete'='off'
到ATTRS字典。
如果要定义自己的表单,您可以添加属性的表格字段。
class CommentForm(forms.Form):
name = forms.CharField(widget=forms.TextInput(attrs={
'autocomplete':'off'
}))
如果您使用的是模型,您将无法在窗体中定义字段属性。但是,您可以使用__init__
添加必需的属性。
class CommentForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CommentForm, self).__init__(*args, **kwargs)
self.fields['name'].widget.attrs.update({
'autocomplete': 'off'
})
您也可以从Meta
class CommentForm(forms.ModelForm):
class Meta:
widgets = {
'name': TextInput(attrs={'autocomplete': 'off'}),
}
由于添加的属性!我在你的答案前1分钟发现了这一点...不是它总是如此吗?! – 2010-04-05 21:05:25
这在Chrome中不起作用。即使自动完成=关闭,它仍会自动填充用户名和密码字段。 – Cerin 2014-05-28 19:32:57
看看这个问题:http://stackoverflow.com/questions/15738259/disabling-chrome-autofill – codescribblr 2017-04-21 14:44:43