python - Django 2.0 - 登录查看测试中的 KeyError
问题描述
我在测试我的 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'“,就像它没有获得发布数据一样。我是在视图上做错了什么还是测试?
解决方案
推荐阅读
- firebase - FireStore 规则:从节点获取数据
- arduino - 我正在尝试对 MLX90288 霍尔效应传感器进行编程并将参数写入其 EEPROM
- java - 使用 JPA 查询获取上个月内的所有列?
- javascript - 列出 Firebase 数据库中的节点
- python - 从keras卷积层中的数组设置权重
- bootstrap-4 - 响应式导航栏下拉问题
- angular - 从一无所有到 emailjs 到 emailjs-com
- ios - 如果节点具有 currentuser.uid 对象并显示在我的 UITableViewCell 中,则从 Firebase 中的节点检索对象
- javascript - 我写了一个简单的 Javascript 闭包代码,但它没有运行。我哪里错了?
- android - 当用户从按钮上移开手指时如何处理一个动作?