def loginUser(request):
if request.method != 'POST':
return redirect('/')
attempt = User.objects.validateUser(request.POST)
if attempt['status'] == True:
request.session['user_id'] = attempt['user'].id
return redirect('/books')
else:
messages.add_message(request, messages.ERROR, attempt['message'], extra_tags="login")
return redirect('/')
/ login的KeyError
U'消息'
请求方法:POST
请求网址:http://127.0.0.1:8000/login
Django版本:1.11
异常类型:KeyError
例外价值:
U'消息'
答案 0 :(得分:1)
它说字典 Glide.with(context)
.load(url)
.override((int) context.getResources().getDimension(R.dimen._180sdp), (int) context.getResources().getDimension(R.dimen._300sdp))
.fitCenter()
.bitmapTransform(new RoundedTransformation(context, (int) context.getResources().getDimension(R.dimen._10sdp)))
.error(defaultImageResId)
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
progressBar.setVisibility(View.INVISIBLE);
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
progressBar.setVisibility(View.INVISIBLE);
return false;
}
})
.into(imageView);
没有密钥attempt
。在这里你得到字典:
message
此时检查attempt = User.objects.validateUser(request.POST)
的值(在控制台中打印,或断言False并在浏览器中以交互方式处理)。如果它没有key attempt
的值,你可以在这里提供(validateUser方法),或者让它是可选的,并改变你访问该值的方式:
message
注意,更改来自:
messages.add_message(request, messages.ERROR, attempt.get('message', 'default_msg'), extra_tags="login")
到
attempt.['message']
答案 1 :(得分:0)
您可以使用以下两种方式。
# either
try:
message = attempt['message']
except KeyError:
message = 'default message or your own message'
# or
message = attempt.get('message', 'default message you need to set it yourself')
# after that just use the message variable
messages.add_message(request, messages.ERROR, message, extra_tags="login")