Python 是否在Django中的文本字段上禁用自动完成?
有人知道如何在Django中关闭文本字段的自动完成功能吗Python 是否在Django中的文本字段上禁用自动完成?,python,django,forms,autocomplete,Python,Django,Forms,Autocomplete,有人知道如何在Django中关闭文本字段的自动完成功能吗 例如,我从模型生成的表单有一个信用卡号的输入字段。让自动完成功能保持打开状态是不好的做法。手工制作表单时,我会添加一个autocomplete=“off”语句,但如何在Django中执行此操作并仍然保留表单验证?在表单中,指定要用于字段的小部件,并在该小部件上添加一个attrs字典。例如(直接从下表): 只需将autocomplete=“off”添加到attrs dict中即可。将autocomplete=“off”添加到表单标记中,这样
例如,我从模型生成的表单有一个信用卡号的输入字段。让自动完成功能保持打开状态是不好的做法。手工制作表单时,我会添加一个autocomplete=“off”语句,但如何在Django中执行此操作并仍然保留表单验证?在表单中,指定要用于字段的小部件,并在该小部件上添加一个
attrs
字典。例如(直接从下表):
只需将autocomplete=“off”添加到attrs dict中即可。将autocomplete=“off”添加到表单标记中,这样就不必更改django.form实例
{{form}}
如果要定义自己的表单,则可以向表单中的字段添加属性
class CommentForm(forms.Form):
name = forms.CharField(widget=forms.TextInput(attrs={
'autocomplete':'off'
}))
如果您使用的是modelforms,那么您将无法在表单中定义字段属性。但是,您可以使用\uuuu init\uuu
添加所需的属性
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'}),
}
对我来说,在模板中添加额外属性也很有效:
<form method="POST", autocomplete="off">
{% csrf_token %}
{{ form.as_p }}`
{%csrf_令牌%}
{{form.as_p}}`
谢谢!我在你回答之前1分钟发现了这个…这不是一直都是这样吗?!这在Chrome中对我不起作用。即使autocomplete=off,它仍然会自动完成用户名和密码字段。看看这个问题:既然attrs
是一个字典,它应该是“autocomplete”:“off”
。只是为了容易找到答案:@codescribblr共享的链接建议用“新密码”替换“off”。为我工作(而所有其他解决方案都没有)
<form method="POST", autocomplete="off">
{% csrf_token %}
{{ form.as_p }}`