【问题标题】:Django - stop form text area from autopopulatingDjango - 停止自动填充表单文本区域
【发布时间】:2020-11-08 06:50:32
【问题描述】:

我正在使用 Django 制作登录表单,但是在我将密码输入小部件添加到我的 loginForm 后,表单文本会自动填充我数据库中的第一个用户(见下图)。这发生在我刷新或提交表单后。我希望用户名和密码字段为空。

Image

forms.py:

class loginForm(ModelForm):
    class Meta:
        model = User
        fields = ['username', 'password']
        widgets = {'password': forms.PasswordInput()}  

views.py:

def loginview(request):
    if request.method == 'POST':
        form = loginForm(request.POST)
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            return HttpResponse('<html> Thanks </html>')
        else:
            form = loginForm()
    else:
        form = loginForm()
    return render(request, 'login.html', {'form':form})

login.html:

<!DOCTYPE html>
<html lang="en" dir="ltr">
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <form class="" action="" method="post">
            <div class="field">
                {{ form.username.label_tag }} {{ form.username }}
            </div>
            <div class="field">
                {{ form.password.label_tag }} {{ form.password }}
            </div>
            {% csrf_token %}
            <input type="submit" value="Login to Your Grocerylist Account ">
        </form>
    </body>
</html>

【问题讨论】:

  • 它没有,人口可能由 浏览器 发生,特别是因为 Django 不 save 密码,它保存 hash 的密码。

标签: python django django-forms


【解决方案1】:

这是由浏览器完成的,而不是由 Django 完成的。这可能是文本字段具有浅蓝色背景的原因。 Django 无法填写密码,因为 Django 根本不保存 密码:它存储密码的散列。所以无法恢复原来的密码,只能验证两个密码的hash是否相同。

浏览器通常会存储凭据,这样更安全,因为用户很容易为不同的站点使用不同的密码。因此,它使用户的浏览更加方便和安全。

您可能会打开浏览器的设置并删除保存的密码。再刷新页面,密码就不再填写了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 2023-03-21
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    相关资源
    最近更新 更多