Django Signup/in Workout

jinatra·2021년 8월 27일
0

Django

목록 보기
7/9

Django Signup/in Workout


취지

지금까지 Django를 이용한 회원가입 작성을 한 두번 정도 진행했다.

  1. 첫번째는 Django에 대한 아주 얕은 지식만 가진 채로 시작을 했기에, 거의 처음부터 아무것도 쌓아나가지 못했어서 숱한 구글링과 클론코딩, 주변의 도움을 받아 작성했었다.
  2. 두번째에는 가급적 스스로 하려고 했으나, 벽에 부딪힐때에는 머리를 싸매고 고민해보다가 도저히 안될때 내가 한걸 슬쩍슬쩍 곁눈질로 보는 느낌으로 진행했다.
  3. 이번 세번째에는, 아래에 내가 어떤식으로 진행할건지 대략적인 순서만 적어놓고, 내가 기존에 썼던 코드는 절대절대절대 보지 않고, 정말 필요할 때에 구글링만 하면서 다시 해볼 것이다. 그러면서 실수했던걸 하나하나 적어보는 시간을 가져볼 것이다.

순서

  1. 초기세팅 (가상환경 만들기, Django 세팅, DB 제작 및 연동 등)
  2. 프로젝트 및 회원가입을 위한 APP 제작
  3. 모델링 및 views.py 및 urls.py 작성 (회원가입)
  4. views.py 및 urls.py 작성 (로그인)
  5. 비밀번호 암호화 (bcrypt 이용)
  6. 토큰 발행 (JWT 이용)

1. 초기세팅

  • settings.py 안 APPS에 users 앱 넣는거 깜빡해서 20분 헤맴..
  • 절대경로로 불러올때는 항상 시작경로부터!! (상대경로랑 헷갈려버렸었다.)

2. 프로젝트 및 회원가입을 위한 APP 제작

  • 별다른 문제 없이 잘 진행

3. 모델링 및 views.py 및 urls.py 작성 (회원가입)

  • data = json.loads(request.body) 당연히 body에 담겨오는건데 .body를 깜빡했다..
  • models.py 에서 초기 DB 설정에서 실수가 있었어서 DB를 drop하고 다시 migrate 해야했다.
  • mySQL에서 DB만 drop 한다고 되는게 아니라 migrate 이력 자체도 삭제해야해서 경로의 migration 디렉토리 삭제

  • 정상 작동

(잘못된 이메일, 비밀번호, 휴대폰번호 양식 및 중복 이메일 입력시에도 지정한 메세지 출력)

  • KeyError 예외 삽입을 깜빡해서 부랴부랴 예외문 작성

3-1. 중간 코드 점검


4. views.py 및 urls.py 작성 (로그인)

  • 별다른 문제 없이 잘 진행

(잘못된 이메일, 비밀번호 입력시에도 지정한 메세지 출력)


4-1. 중간 코드 점검


5. 비밀번호 암호화 (bcrypt 이용)

  • 별다른 문제 없이 잘 진행
  • 코드의 위치에 대한 근원적 질문에 부딪힘 (따로 글을 작성해서 생각해보자)
  • 회원가입 진행

3번째 김오류의 경우, str타입으로 변환되지 않은 hashed_password를 바로 객체의 데이터에 넣어버리게 되면 byte타입으로 될텐데, 이때 기존에 배웠던 대로 데이터가 b''로 감싸지는지 궁금해서 넣어봤다.

  • 로그인 정상 진행

  • 암호화된 비밀번호와 잘 매치 (혹시나해서 이메일, 비밀번호 틀려봤는데 에러메세지 잘 출력되는것도 확인!)

5-1. 중간 코드 점검 (회원가입)


5-2. 중간 코드 점검 (로그인)


6. 토큰 발행 (JWT 이용)

  • HS256 방식을 주는 알고리즘명이 algorithms가 아니라 algorithm
  • 정상 작동 확인


최종 코드

  • viesw.py

  • main urls.py


  • app(users) urls.py





Take Away

뿌듯함

세번째로 하는거라 어느정도 틀을 알고 있어서 암기에 의존한 면이 없지 않아있지만, 그래도 내 스스로 계속 오류를 찾아내고 수정해나가면서 최종적으로 완성했다는 것이 무엇보다 뿌듯하다.
그리고 정규표현식을 파이썬 MDN을 제외한 어떤 문서도 참조하지 않고 완성해냈다는 것이 좀 뿌듯하다. 다음번엔 다른 양식도 한번 정규표현식을 이용해서 표현해보고 싶다.


초기 설정 및 모델링의 중요성

위 과정을 보면 알겠지만, 모델링 및 migrate 후 view를 작성하는 과정에서 한번의 실수로 DB를 삭제하고 재생성했다. 제로베이스에서 시작한거라 망정이지 어떤 DB가 있거나, 다른 DB와 연동된 상태였으면 끔찍했을 것이다.
물론 SQL을 다루지 못하는 나의 미숙함도 있었겠지만, DB의 중요함을 알고있어야하고, 느껴야하는 백엔드이기에 위의 실수는 여느때보다 나의 마음 속에 깊이 남을 듯 하다.





참고
https://docs.djangoproject.com/en/3.2/ref/urls/
https://docs.python.org/ko/3/howto/regex.html
https://wikidocs.net/4308

profile
으악

0개의 댓글