我正在尝试使用 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":
行将无效。
这对我来说是新事物,我有点不确定如何完成它。
任何帮助将不胜感激。
谢谢!
答案 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":
...