【问题标题】:Django - why cant i retrieve user name?Django - 为什么我不能检索用户名?
【发布时间】:2019-12-18 01:04:04
【问题描述】:

当我登录用户并尝试检索用户名或任何详细信息时,我收到以下错误。不确定它的真正含义是什么?

def loginview(request):

    message=[]
    if request.method=='POST':

        if Loginform(request.POST).is_valid():
            login_form=Loginform(request.POST)
            loginuser=authenticate(username=request.POST['email'],password=request.POST['password'])

            if loginuser is not None:
                login(request,loginuser)
                print("attempted log in")
                uname=User.username
                print(User.get_full_name)

                return render(request,'payrequest/templates/landing.html',{'landing_content':'Well done, you are loged in as'+ str(User.get_username)})
            else:
                return render(request,'payrequest/templates/landing.html',{'landing_content':'Incorrect details, try again.','okurl':'login'})
        else:
            message.append("We had some difficulties processing your request, please try again. If the issue persists please contact the systems team.")
            return render(request,'payrequest/templates/landing.html',{'landing_content':'invalid data','okurl':'login'})

    else:
        login_form=Loginform()
        return render(request,'payrequest/templates/login.html',{'form':login_form})

控制台打印: <function AbstractUser.get_full_name at 0x04560BB0>

【问题讨论】:

  • 您忘记了调用方法的()

标签: python django


【解决方案1】:

不确定您的上下文中的 User 是什么,但 Python 代码中的方法(这是模型方法,而不是属性)应该使用 () 调用,例如 user.get_full_name()

在 Django 模板中,您可以跳过它,模板引擎会代替您在后台执行此操作 :)

通常以大写字母开头的单词表示类名,而不是对象。所以通常UserUser 模型类,但user 是您从数据库创建或检索的User 模型实例(例如user = User.objects.get(pk=1))。

【讨论】:

  • 谢谢你,我终于明白了,通过下面的操作就可以了。 :)
  • user = User.objects.get(username=request.user.username) print(user)
  • 无论如何user.get_full_name 是一种方法,您可以在从数据库中检索到的user 模型对象上像user.get_full_name() 一样调用它
【解决方案2】:

也许您应该使用以下两行代码替换您的代码。

uname=loginuser.username
print(loginuser.get_full_name)

【讨论】:

  • 您将打印与 OP 相同的输出
猜你喜欢
  • 2011-09-14
  • 2017-08-12
  • 2021-03-18
  • 1970-01-01
  • 2022-07-11
  • 1970-01-01
  • 2020-10-18
  • 2016-05-13
  • 2023-04-08
相关资源
最近更新 更多