Disable autocomplete sur textfield à Django?
est-ce que quelqu'un sait comment vous pouvez désactiver l'autocompletion sur un champ de texte à Django?
par exemple, un formulaire que je génère à partir de mon modèle a un champ d'entrée pour un numéro de carte de crédit. C'est une mauvaise pratique de laisser l'auto-complétion. En faisant le formulaire à la main, j'ajouterais une instruction autocomplete= "off", Mais comment faire dans Django et conserver la validation du formulaire?
4 réponses
dans votre forme, spécifiez le widget que vous voulez utiliser pour le champ, et ajoutez un attrs
dictionnaire sur ce widget. Par exemple (directement à partir de l' documentation de django):
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'}))
il suffit d'ajouter 'autocomplete'='off'
à l'attrayant dict.
Ajouter l'autocomplete="off" à la balise de formulaire, de sorte que vous n'avez pas à changer le django.l'instance de formulaire.
<form action="." method="post" autocomplete="off">
{{ form }}
</form>
Si vous définissez vos propres formulaires, vous pouvez ajouter des attributs à vos champs dans le formulaire.
class CommentForm(forms.Form):
name = forms.CharField(widget=forms.TextInput(attrs={
'autocomplete':'off'
}))
si vous utilisez des modelformes, vous n'aurez pas le luxe de définir des attributs de champ dans la forme. Toutefois, vous pouvez utiliser __init__
pour ajouter les attributs requis.
class CommentForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CommentForm, self).__init__(*args, **kwargs)
self.fields['name'].widget.attrs.update({
'autocomplete': 'off'
})
vous pouvez aussi ajouter des attributs de Meta
class CommentForm(forms.ModelForm):
class Meta:
widgets = {
'name': TextInput(attrs={'autocomplete': 'off'}),
}
pour moi ajouter un attribut supplémentaire dans les Modèles a aussi fonctionné:
`<form method="POST", autocomplete="off">
{% csrf_token %}
{{ form.as_p }}`