1
def login_user(request):
    if request.session['member_id']:
        m=User.objects.get(id=request.session['member_id'])
        #state = "You're successfully logged in!"
        username = m.username
        return render(request,'auth/success.html',{'username': username})
    else:    
        state = "Please log in below..."
        username = password = ''
        if request.POST:
            username = request.POST.get('username')
            password = request.POST.get('password')

            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    login(request, user)
                    m=User.objects.get(username=username)
                    state = "You're successfully logged in!"
                    request.session['member_id'] = m.id
                    return render(request,'auth/success.html',{'state':state, 'username': username})
                else:
                    state = "Your account is not active, please contact the site admin."
                    return render(request,'auth/auth.html',{'state':state, 'username': username})
            else:
                state = "Your username and/or password were incorrect."
                return render(request,'auth/auth.html',{'state':state, 'username': username})

        else:
            return render(request,'auth/auth.html',{'state':state, 'username': username})

私のコードは上記のようなものです。実際、セッションに member_id が存在するかどうかを確認したい。しかし、member_idのlogin_user関数ビューでKeyErrorを取得しています

4

1 に答える 1

2

in演算子を使用する必要があります:

if 'member_id' in request.session:

存在するが「偽」( FalseNone、など) である場合、0演算子は成功しますが、有効なではないため、両方を確認することをお勧めします。""inrequest.session['member_id']id

if 'member_id' in request.session and request.session['member_id']:
于 2013-02-23T20:21:40.347 に答える