완성된 모델은 다음과 같다.
최초 모델은 email과 password가 따로 테이블을 구성하였고, foreignkey로 연결되어 있었다. 그러나 이 경우 사용자 정보를 모아 저장할 수 없어 적절하지 못한 구성이었고, 테이블을 사용자로 통합한 후 정보들을 추가해주었다. 또한, 사용자 정보가 하나씩만 존재하도록 데이터베이스에도 제한을 걸었다. 이 과정에서 생긴 오류들의 종류는 마지막에 정리하고자 한다.
프론트에서 들어온 요청을 처리하는 파일로, 다음과 같이 작성하였다.
이 파일에서 동일한 사용자가 가입을 시도하지 않는지 처리해야 했고, 비밀번호 또한 처리해야 했다. 회원가입은 하나의 독자적인 기능이기 때문에 class를 작성하였고, 프론트에서 데이터를 보내는 것이기 때문에 post메소드로 처리했으며, 요청의 body에 데이터가 존재하지 않는 경우 except로 예외처리를 하여 key error를 반환하도록 하였다.
그리고 이메일에 '@'와 '.'가 반드시 존재하도록 검사하기 위해 조건문을 작성하였다. 동일한 사용자가 회원가입을 시도하였을 때 에러메세지를 반환하도록 조건문을 작성하였다. 마지막으로, 입력한 비밀번호의 길이가 부족할 경우 또한 조건문으로 처리하였다.
상기한 조건문들을 모두 통과하였을 경우에 한하여, 데이터베이스에 사용자 정보를 추가하도록 하였다. 이때, 비밀번호를 암호화하기 위해 bcrypt를 사용하였는데, 이 부분에서 미처 생각치 못했던 부분이 생겨 차후에 수정하였다. 그 부분 또한 하단에서 다루고자 한다.
메인 urls.py에는 user앱의 urls.py로 이동하도록 경로를 작성하였고 user앱의 urls.py에는 /signup으로 회원가입을 진행하도록 작성하였다.
find . -path "*/migrations/*.pyc" -delete```
였다. 이는 그동안 진행한 migration절차기록을 모두 지워 초기화하는 것으로, 이때 init파일은 migration을 실행할 때 필요한 정보들이 들어있기 때문에 지워선 안된다. 그 이후 데이터베이스도 지우고 다시 생성한 뒤 migration을 진행하자 최종 모델로 생성되었다.