2010-04-05 42 views
15

Có ai biết làm thế nào bạn có thể tắt tự động hoàn thành trên một trường văn bản trong Django?Tắt tự động điền trên trường văn bản ở Django?

Ví dụ: biểu mẫu tôi tạo từ mô hình của tôi có trường nhập cho số thẻ tín dụng. Thực tiễn không tốt để tự động hoàn thành. Khi tạo biểu mẫu bằng tay, tôi sẽ thêm câu lệnh autocomplete = "off", nhưng làm thế nào để bạn làm điều đó trong Django và vẫn giữ nguyên mẫu xác nhận?

Trả lời

21

Trong biểu mẫu của bạn, chỉ định tiện ích con bạn muốn sử dụng cho trường và thêm từ điển attrs vào tiện ích đó. Ví dụ (trực tiếp từ 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'})) 

Chỉ cần thêm 'autocomplete'='off' để dict attrs.

+0

Cảm ơn! Tôi tìm thấy điều này 1 phút trước khi câu trả lời của bạn ... không phải là nó luôn luôn như thế nào ?! –

+3

Tính năng này không hoạt động đối với tôi trong Chrome. Nó vẫn tự động hoàn thành các trường tên người dùng và mật khẩu, ngay cả khi autocomplete = off. – Cerin

+0

hãy xem câu hỏi này: http://stackoverflow.com/questions/15738259/disabling-chrome-autofill – codescribblr

21

Thêm tự động điền = "tắt" vào thẻ biểu mẫu, do đó bạn không phải thay đổi trường hợp django.form.

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

+3

Tính năng này không hoạt động trong chrome. – nima

+0

@nima đã làm việc cho tôi – Jimmar

2

Nếu bạn đang định dạng của riêng bạn, bạn có thể thêm các thuộc tính cho các lĩnh vực của bạn trong biểu mẫu.

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

Nếu bạn đang sử dụng biểu mẫu, bạn sẽ không có sự xác định thuộc tính trường trong biểu mẫu. Tuy nhiên, bạn có thể sử dụng __init__ để thêm thuộc tính bắt buộc.

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

Bạn cũng có thể thêm các thuộc tính từ Meta

class CommentForm(forms.ModelForm): 
    class Meta: 
     widgets = { 
      'name': TextInput(attrs={'autocomplete': 'off'}), 
     } 
Các vấn đề liên quan