赋值前引用的局部变量 - Django 2.1

问题描述

我一直在寻找在 Django 中无需密码即可对用户进行身份验证的方法,但这不是我的疑问。

我看到了 this 的回答,其中有 24 票赞成。答案说我已经在我的 views.py 中这样做了:

user = authenticate(username=user.username)
login(request,user)

当我执行代码时,我收到此错误UnboundLocalError: local variable 'user' referenced before assignment。这对我来说很明显,我正在使用该变量定义一个变量。

那么,如果答案不起作用,为什么会有 24 个赞成票?我该怎么做才能使上述代码正常工作?

Django 版本:2.1

解决方法

正如@chepner 用简单的话解释的那样,这里的问题与在本地范围内使用它有关。

如果您正确地执行了这些步骤,则需要在 views.py 中的相关函数中添加上述代码行。 user 将是您尝试在没有密码的情况下进行身份验证的用户对象。

您可以在此处查看有关 User 对象的更多信息。