【问题标题】:Django form 'autocomplete'='off' does not workDjango 表单“自动完成”=“关闭”不起作用
【发布时间】:2016-01-11 20:47:32
【问题描述】:

我已经看到了很多关于 SO 的答案,但没有一个对我有用。我的模型形式如下:

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,但我仍然遇到同样的问题。谁能告诉我我做错了什么?

【问题讨论】:

    标签: django google-chrome safari


    【解决方案1】:

    使用现代浏览器,我不相信您将能够实现您正在寻找的行为。根据Mozilla Developer Network

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

    • 如果网站为表单设置了 autocomplete="off",并且表单包含用户名和密码输入字段,则浏览器仍会提供记住此登录信息,如果用户同意,浏览器将自动填充这些字段下次用户访问此页面时。
    • 如果网站将用户名和密码输入字段设置为 autocomplete="off",则浏览器仍会提供记住此登录信息,如果用户同意,浏览器将在用户下次访问此页面时自动填充这些字段.

    这是 Firefox(自版本 38 起)、Google Chrome(自 34 版起)和 Internet Explorer(自版本 11 起)中的行为。

    【讨论】:

    • 但是重置密码页面呢?自动完成在那里不起作用,其他大炮如何使用 Django 完成?
    【解决方案2】:

    在 Django 文档中,您将找到解决问题所需的内容,我做了一些测试,效果很好。

    找到解决方案 - Django documentation

        from django import forms
    
        class ChangePasswordForm(forms.Form):
            password = forms.CharField(label='Password', widget=forms.PasswordInput)
            confirmPass = forms.CharField(label='Confirm Password', widget=forms.PasswordInput)
    
            password.widget.attrs.update({'autocomplete':'off', 'maxlength':'32'})
            confirmPass.widget.attrs.update({'autocomplete':'off', 'maxlength':'32'})
    

    【讨论】:

    • 您能否为您的回答提供更多背景信息?
    【解决方案3】:

    可以通过在所有字段/小部件/属性/自动完成中将“关闭”更改为“新密码”来完成。它对我有用。

    前:

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

    找到解决方案here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-29
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 2010-09-19
      相关资源
      最近更新 更多