对于登录,请求在 Django 中提供用户详细信息

时间:2021-05-19 02:22:56

标签: django django-rest-framework django-views

我正在尝试使用 Django rest 框架创建一个 Django 待办事项应用程序,在那里我遇到了这个问题。

我正在通过 rest 框架对用户进行身份验证,以便我能够为用户获取身份验证令牌。我的意见.py...

def login(request):
    print("\n\n", request, "\n\n")
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        user =  authenticate(username=username, password=password)
        if user is not None:
            login(user)
            response = requests.post("http://127.0.0.1:8000/api/login/", data={"username":username, "password":password})
            token =  json.loads(response.text).get("token")
            request.session["token"] = f"Token {token}"
            request.session.modified = True

            # r = requests.get("http://127.0.0.1:8000/api/", headers={"Authorization":request.session["token"]})
            return redirect("home")
            

        else:
            return render(request, "todo/login.html", {"message":"Your entered credentials are wrong"})

    else:
        return render(request, "todo/login.html")

其中我认为当我的用户输入无效时,request 参数带有值 <WSGIRequest: POST '/login'>。但是当用户输入有效时,request 参数包含我的用户详细信息(值 najaaz - 我的用户名)。此输出是使用第 2 行中的打印语句计算得出的。

由于它包含我的用户详细信息,因此我收到以下错误 'User' object has no attribute 'method',因为 if request.method == "POST": 行将无效。

这对我来说是新事物,我有点不确定如何完成它。

任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

这个

'User' object has no attribute 'method'     

通常发生是因为 django 认为您正在覆盖它的 login 方法,请尝试将您的视图命名为其他名称,

def log_in_view(request):
  print("\n\n", request, "\n\n")
  if request.method == "POST":
    ...