관리 메뉴

웹개발자의 기지개

[Django] Exception Type: DoesNotExist 본문

python/Django

[Django] Exception Type: DoesNotExist

http://portfolio.wonpaper.net 2022. 3. 14. 18:31

Exception Type : DoesNoExist

Exception Value : Fcuser matching query does not exist.

 

fcuser = Fcuser.objects.get(username=username) 에서 fcuser 의 객체가 없어서 나오는 에러

아래와 같이 예외처리하면 된다.

 

[fcuse 앱의 views.py 소스 일부 참고]

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.contrib.auth.hashers import make_password, check_password
from .models import Fcuser
 
 
def home(request):
    user = request.session.get('user')
    if user:
        fcuser = Fcuser.objects.get(pk=user)
        return HttpResponse(fcuser.username)
 
    return HttpResponse('Home')
 
 
def logout(request):
    if request.session.get('user'):
        del(request.session['user'])
    return redirect('/')
 
 
def login(request):
    if request.method == "GET":
        return render(request, 'login.html')
    elif request.method == "POST":
        username = request.POST.get('username'None)
        password = request.POST.get('password'None)
 
        res_data = {}
 
        if not (username and password):
            res_data['error'= "모든 값을 입력해 주십시오."
        else:
            try:
                fcuser = Fcuser.objects.get(username=username)
 
                if check_password(password, fcuser.password):
                    # 비밀번호가 일치한다 - 로그인한다.
                    request.session['user'= fcuser.id
                    return redirect('/')
                else:
                    res_data['error'= "비밀번호가 틀렸습니다.1"
            except:
                res_data['error'= "일치하는 사용자정보가 존재하지 않습니다."
 
 
        return render(request, 'login.html', res_data)
cs

 

34라인에서 43 라인 사이를 살펴보면 되겠다.

 

Comments