我在测试Django应用程序时遇到一些问题。我有一个视图,该视图从登录表单获取信息,然后验证/认证用户,因此将其重定向到显示各种信息的主视图。我还放置了一个控件,以便当用户未登录时,他尝试插入URL“ / home”时,会将其重定向到显示错误模板的错误页面视图。
这是getLogin视图,在提交“ login.html”页面中的表单时调用。我不会显示showLoginTemplate视图,因为它基本上只是这样做。
def getLogin(request):
if request.user.is_authenticated:
...
# operations and context creation
...
return render(request, 'myapp:home', context)
else:
if request.method == "POST":
email = request.POST['mail']
password = request.POST['psw']
user = authenticate(request, username=email, password=password)
if user is not None:
auth_login(request, user) #the Django login renamed as auth_login
...
# operations and context creation
...
return redirect("/home", context)
else:
return redirect('/login/error', errorLogin='error')
# shows the same page but with a login error message
else:
return redirect("myapp:errorpage")
主视图:
def home(request):
if request.user.is_authenticated:
# operations and context creation
return render(request, 'users/home.html', context)
else:
return redirect("myapp:errorpage")
#goes into a error page
这是我正在尝试的测试
def testHomeWithLogin(self):
user = User.objects.create(username="qwerty@gmail.com",
email="qwerty@gmail.com", password="qwerty")
print(user.username)
response = self.client.post("/login/#", {
"mail": "qwerty@gmail.com", "psw": "qwerty"
})
print(response.context["mail"])
我在最后一行收到“ KeyError”:'mail'“,就像它没有获取帖子数据一样。 我在视图中做错了还是测试?