2015-10-13 62 views
3

我见过很多关于SO的答案,并没有一个适用于我的案例。我的模型窗体如下所示:Django窗体'autocomplete'='off'不起作用

class ChangePasswordForm(forms.Form): 
    current_password = forms.CharField(
     max_length=64, 
     widget=forms.PasswordInput(
      attrs={'placeholder': 'Current Password', 'autocomplete': 'off'})) 

    new_password = forms.CharField(
     min_length=6, 
     max_length=64, 
     widget=forms.PasswordInput(
      attrs={'placeholder': 'New Password', 'autocomplete': 'off'})) 

    confirm_password = forms.CharField(
     min_length=6, 
     max_length=64, 
     widget=forms.PasswordInput(
      attrs={'placeholder': 'Confirm New Password', 'autocomplete': 'off'})) 

仍然current_password,new_password和confirm_password填充在窗体上。我检查过Safari和Google Chrome,但我仍然遇到同样的问题。谁能告诉我我做错了什么?

回答

1

对于现代浏览器,我不相信你能够实现你正在寻找的行为。按照Mozilla Developer Network

...许多现代的浏览器不支持登录 领域的自动完成=“关闭”。

  • ,如果一个网站设置的形式自动完成=“关闭”,和形式包括用户名和密码输入框,然后在浏览器将仍然提供记住这个登录,如果用户同意,浏览器会自动填充这些字段在用户下次访问该页面时显示。
  • 如果某个网站为用户名和密码输入字段设置了autocomplete =“off”,那么浏览器仍会提供记住此登录信息,如果用户同意,则下次用户访问此页时浏览器将自动填充这些字段。

这是Firefox(从版本38开始),Google Chrome(从34开始)和Internet Explorer(从版本11开始)的行为。

+2

后来怎么样重置密码的页面?自动完成不能在那里工作,其他大枪如何使用Django来完成? –

0

可以通过在所有字段/小部件/ attrs /自动完成中使用'new-password'更改'off'来完成。这个对我有用。

EX:

current_password = forms.CharField(
    max_length=64, 
    widget=forms.PasswordInput(
     attrs={'placeholder': 'Current Password', 'autocomplete': 'new-password'})) 

发现的解决方案here