Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否在Django中的文本字段上禁用自动完成?_Python_Django_Forms_Autocomplete - Fatal编程技术网

Python 是否在Django中的文本字段上禁用自动完成?

Python 是否在Django中的文本字段上禁用自动完成?,python,django,forms,autocomplete,Python,Django,Forms,Autocomplete,有人知道如何在Django中关闭文本字段的自动完成功能吗 例如,我从模型生成的表单有一个信用卡号的输入字段。让自动完成功能保持打开状态是不好的做法。手工制作表单时,我会添加一个autocomplete=“off”语句,但如何在Django中执行此操作并仍然保留表单验证?在表单中,指定要用于字段的小部件,并在该小部件上添加一个attrs字典。例如(直接从下表): 只需将autocomplete=“off”添加到attrs dict中即可。将autocomplete=“off”添加到表单标记中,这样

有人知道如何在Django中关闭文本字段的自动完成功能吗


例如,我从模型生成的表单有一个信用卡号的输入字段。让自动完成功能保持打开状态是不好的做法。手工制作表单时,我会添加一个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 }}`