python - AttributeError at/accounts/login/'User' 对象没有属性 'user'

标签 python django authentication

我是 django 的新手,正在尝试让用户身份验证工作。我已经设置了一个非常基本的登录表单并查看,但出现错误:

AttributeError at /accounts/login/ 'User' object has no attribute 'user'

我很困惑,因为我没有尝试访问 User.user
我知道它必须是第一个 else 语句中的内容,因为经过身份验证的用户只是重定向到“/”,因为它应该
这是 View :

def login(request):
  if request.user.is_authenticated():
    return HttpResponseRedirect("/")
  else:
    if request.method == 'POST':
      username = request.POST['username']
      password = request.POST['password']
      user = authenticate(username=username, password=password)
      if user is not None:
        if user.is_active:
          login(user)
          return HttpResponseRedirect("/")
      return HttpResponse("There was an error logging you in")
    else:
      return render_to_response("registration/login.html", 
                                 context_instance=RequestContext(request))

错误出现在 views.py 的第 15 行:if request.user.is_authenticated():

最佳答案

您的 View 函数称为 login,它只有一个参数 request

在您的 View 的第 11 行中,您调用了 login(user)。现在,您的意思可能是 django.contrib.auth 中的登录函数,并且您可能已经从 View 顶部的那里导入了它。但是 Python 一次只能让一件事使用名称:因此当您将 View 命名为 login 时,它会覆盖对该名称的现有引用。

这样做的结果是该行调用您的 View ,而不是登录函数。 (这就是为什么你会得到那个特定的错误:你的 View 的第一行检查 request.user,从通常是请求的第一个参数中获取 request - 但在你的情况,你已经将 user 作为第一个参数传递,当然 user 本身没有 user 参数。)

解决方案是将您的 View 重命名为其他名称,或者执行 from django.contrib import auth 并在您的 View 中调用 auth.login(user)

关于python - AttributeError at/accounts/login/'User' 对象没有属性 'user',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113804/

相关文章:

python - 为什么 inspect.currentframe 比 sys.currentframe 慢_getframe?

python - Django 1.9 JSONField 更新行为

Django 引发 DatabaseError 运行 Model.objects.get

c# - ClaimsPrincipal的作用是什么,为什么会有多个Identity?

php - 无法使用 gmail 使用 php 发送电子邮件 - 授权错误

python - 在多线程 sqlalchemy webapp 中推荐的 scoped_session 使用模式是什么?

python - 特征提取并取颜色直方图

python - 增强 is_valid() 但有异常

python - Django查找文件路径问题

java - 使用java从本地商店获取SSL证书到sslContext对象