본문 바로가기
카테고리 없음

[Django Framework (5) error 메세지구현] 내일배움캠프 AI트랙

by lovvepearl 2022. 1. 25.

회원가입이나 로그인을 할때

사용자가 좀 더 편리하게

서비스를 사용할 수 있도록 

예외처리를 하는 작업을 한다.

 

error 메세지를 alert으로 띄우면

어떤 부분이 잘못되었는지를

쉽게 알 수 있기 때문에

사용자 친화적이라고 볼 수 있다.

 

 

회원가입/로그인 error 메세지 설정

 

views.py에서 html과 함께 error를 보내준다.

 

def sign_up_view(request):
    if request.method == 'GET':  # GET 메서드로 요청이 들어 올 경우
        user = request.user.is_authenticated
        if user:
            return redirect('/')
        else:
            return render(request, 'user/signup.html')
    elif request.method == 'POST':  # POST 메서드로 요청이 들어 올 경우
        username = request.POST.get('username','')
        password = request.POST.get('password','')
        password2 = request.POST.get('password2','')
        bio = request.POST.get('bio','')

        if password != password2:

            return render(request, 'user/signup.html', {'error':'패스워드를 확인해주세요!'})
        else:
            if username == '' or password == '':
                return render(request, 'user/signup.html', {'error':'사용자 이름과 비밀번호는 필수입니다!'})

            exist_user = get_user_model().objects.filter(username=username)

            if exist_user:
                return render(request, 'user/signup.html', {'error':'이미 존재하는 사용자입니다!'})
            else:
                UserModel.objects.create_user(username=username, password=password, bio=bio)
                return redirect('/sign-in')

 

패스워드가 일치하지 않을때, 사용자 이름과 패스워드가 공란일때,

이미 사용자 이름이 있을때(중복X),

로그인시 아이디와 비밀번호가 일치하지 않을때 등 사용하고

error를 싣어 보낼때에는 redirect가 아닌 render를 사용한다. 

 

error를 넘겨받은 html에서는 template 언어로 에러를 표시해준다.

 

{% if error %}
    <div class="alert alert-danger" rele="alert">
    {{ error }}
    </div>
{% endif %}

 

에러상태라면 넘겨받은 메세지가 출력된다👍