KeyError at / login u' message'

时间:2017-04-28 03:36:26

标签: python django keyerror

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'消息'

2 个答案:

答案 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")