【问题标题】:How to avoid password being auto-filled如何避免密码被自动填充
【发布时间】:2026-01-26 23:25:01
【问题描述】:

我正在使用 Bootstrap 3 和 WTF 表单在 Flask 中开发应用程序。在个人资料页面,用户可以更改自己的姓名、密码等。

但是当我登录并要求 Firefox 记住我的密码时,新密码字段已在个人资料页面上填写。简单地将value=' ' 添加到我的表单字段不会清除表单的密码字段。

我该如何清除它?

【问题讨论】:

    标签: twitter-bootstrap flask passwords


    【解决方案1】:

    只需将autocomplete="off" 添加到您的密码字段的渲染调用中:

    {{ form.password(autocomplete="off") }}
    

    或者,如果您使用仅循环遍历表单中每个字段的宏来呈现表单,则可以使用自定义小部件:

    from wtforms.widgets import Input
    
    class PasswordWidget(Input):
        def __call__(self, *args, **kwargs):
            if "autocomplete" not in kwargs:
                kwargs["autocomplete"] = "off"
            return super(InputWidget, self).__call__(*args, **kwargs)
    

    然后以该特定形式您可以显式设置小部件:

    class UpdateForm(SomeBaseForm):
        password = StringField("Password", widget=PasswordWidget())
    

    【讨论】:

    • 非常感谢,成功了。
    • Recent versions of Chrome 让这变得更加困难 - this question 提供了一些值得考虑的解决方案。
    • 如果用户设置 Firefox 记住电子邮件/密码,即使我设置了 autocomplete="off",这里有什么解决方法吗?