2010-04-05 29 views
15

¿Alguien sabe cómo puede desactivar el autocompletado en un campo de texto en Django?¿Inhabilitar autocompletar en campo de texto en Django?

Por ejemplo, un formulario que genero a partir de mi modelo tiene un campo de entrada para un número de tarjeta de crédito. Es una mala práctica dejar el autocompletado. Al hacer el formulario a mano, agregaría una declaración de autocompletar = "apagado", pero ¿cómo lo haces en Django y aún conservas la validación del formulario?

Respuesta

21

En su formulario, especifique el widget que desea usar para el campo y agregue un diccionario attrs en ese widget. Por ejemplo (directamente de la 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'})) 

Sólo añadir 'autocomplete'='off' a la dict attrs.

+0

Gracias! Encontré esto 1 minuto antes de tu respuesta ... ¿no es así como siempre? –

+3

Esto no funciona para mí en Chrome. Todavía autocompleta los campos de nombre de usuario y contraseña, incluso cuando autocomplete = off. – Cerin

+0

eche un vistazo a esta pregunta: http://stackoverflow.com/questions/15738259/disabling-chrome-autofill – codescribblr

21

Agregue autocomplete = "off" a la etiqueta del formulario, por lo que no tiene que cambiar la instancia de django.form.

<form action="." method="post" autocomplete="off"> {{ form }} </form>

+3

Esto no funciona en cromo. – nima

+0

@nima funcionó para mí – Jimmar

2

Si va a definir sus propias formas, se puede añadir atributos a los campos del formulario.

class CommentForm(forms.Form): 
    name = forms.CharField(widget=forms.TextInput(attrs={ 
     'autocomplete':'off' 
    })) 

Si está utilizando modelos, no tendrá el lujo de definir atributos de campo en el formulario. Sin embargo, puede usar __init__ para agregar atributos requeridos.

class CommentForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(CommentForm, self).__init__(*args, **kwargs) 
     self.fields['name'].widget.attrs.update({ 
      'autocomplete': 'off' 
     }) 

También puede agregar atributos de Meta

class CommentForm(forms.ModelForm): 
    class Meta: 
     widgets = { 
      'name': TextInput(attrs={'autocomplete': 'off'}), 
     } 
Cuestiones relacionadas