본문 바로가기
python

Django로 회원가입/로그인 페이지 만들기 (Python) - 3탄

by 포 키 2023. 8. 1.
728x90

이번에는 인증코드를 입력해 회원 인증이 되는 것을 직접 확인해볼 것이다.

이 전의 내용은 앞의 포스팅을 참고하자

현재는 쿠키를 사용중인데 세션을 사용하는 것도 아래에 적어두겠다.

2023.08.01 - [python] - Django로 회원가입/로그인 페이지 만들기 (Python) - 2탄

 

Django로 회원가입/로그인 페이지 만들기 (Python) - 2탄

오늘 포스팅하는 내용은 어제 내용에 이어서 인증코드를 발급 받는내용부터 시작한다. 이전 내용을 알고싶다면 이전 블로그 포스팅을 참고해주자 2023.07.31 - [python] - Django로 회원가입/로그인 페

forky-develop.tistory.com

 

 

1. 인증번호 매칭시키기

인증번호가 사용자가 입력한 번호와 쿠키에 저장된 값이 같은지를 확인하려면,

먼저 html 파일을 수정해서 인증이 완료되었다면, 메인화면으로 돌아가도록 경로를 잡아주는 것을 하자

 

1) action을 고쳐주자

 

<div class="content">
            <div class="mainDiv">
                <h4>회원가입을 위해 입력하신 이메일로 인증코드를 보냈습니다.</h4>
                <h3>이메일로 전송된 메일의 인증코드를 입력해주세요.</h3><br>
                <form action="verify" method="POST">{% csrf_token %}
                    <div class="input-group">
                        <span class="input-group-addon" id="basic-addon1">인증코드</span>
                        <input name='verifyCode' type="text" class="form-control" placeholder="인증코드를 적어주세요." aria-describedby="basic-addon1">
                    </div><br>
                    <input type="submit" class="btn btn-success btn-lg" value="인증하기">
                </form>
            </div>
        </div>
        <div class="panel-footer">
            실전예제로 배우는 Django. Project3-ExcelCalculate
        </div>
    </div>
</body>
</html>

 

 

2) views 파일 수정하기

우리는 사용자가 입력한 인증코드가 일치하면 회원 가입이 완료되었다는 의미로 메인 화면으로 돌아가도록 할 것이고,

인증코드가 불일치일 경우 다시 인증코드를 입력하라는 의미로 인증화면으로 되돌릴 것이다.

현재는 아래사진의 User validate에 체크박스가 해제되어있는데 인증이 되면 체크되도록 하는 것까지 해본다.

 

 

 

def verify(request):
    # 사용자가 입력한 code값을 받아야 함
    user_code = request.POST['verifyCode']

    # 쿠키에 저장된 code값과 매칭시킴 (join 함수 확인)
    cookie_code = request.COOKIES.get('code')
    print("코드 확인: ", user_code, cookie_code)

    if user_code == cookie_code:
        user = User.objects.get(id=request.COOKIES.get('user_id'))
        user.user_validate = 1 # True=1 / False=0
        user.save()
    
        print("DB에 user_validate 업데이트---------------------")

        response = redirect('main_index')
        # 저장되어 있는 쿠키 삭제
        response.delete_cookie('code')
        response.delete_cookie('user_id')
        response.set_cookie('user',user)
        return response


    else :
        print("False")
        return redirect("main_verifyCode") # verifyCode 화면으로 돌림
    

    # return redirect("main_index") # 인증이 완료되면 메인화면으로 보내라

 

3)  서버 실행하기

이 때, 지금 인증받을 이메일을 미리 사용했을 경우 아래 코드를 먼저 넣어 데이터만 지워주고, 슈퍼유저부터 다시 만들자

$ rm -rf db.sqlite3
$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py createsuperuser
$ python manage.py runserver

 

 

이 때, 인증번호가 담긴 이메일에서 헷갈릴까봐 한줄로 남겨두면,

인증 메일을 보낸 지메일은 settings에서 이메일 등록을 했다.

인증 메일을 받은 계정은 내가 계정 생성시 같은 지메일 주소를 사용했기 때문이다.

 

이메일로 인증받기

 

2. 인증받은 회원 확인하기

인증코드를 이용해서 인증이 완료된 회원이라고 체크가 되는지를 확인하자

인증을 완료한 후, admin 페이지에서 맨 처음에 봤던 체크박스에 체크가 제대로 되어있다면 성공이다!

 

인증코드까지 모두 확인된 가입자

 

3. 세션 추가하기

1) 파일 확인하기

쿠키를 이용하는 것이 불안정하다는 말이 많아서, 세션을 추가해보도록 하자

그러기 위해선 우리가 필요한 파일이 기본적으로 설치되어 있는지 확인해보자

나의 경우 모두 기본적으로 깔려있었다.

 

settings 확인 코드

 

2) 세션 코드 추가하기

아래 빨간 박스 부분을 보고 쿠키 뒤에 세션에 대한 항목을 붙여넣어주자

 

 

다시 회원가입을 진행했을 때, 아까처럼 오류 없이 나온다면 성공이다

728x90