위스타그램 정리

최대환·2021년 5월 7일
1

프로젝트

목록 보기
1/6

구현사항

  • 회원가입 기능(비밀번호 암호화해서 db에 저장)
  • 로그인 기능(token발행)
  • 게시물 작성, 보기 기능(로그인한 사용자만 가능)
  • 게시물에 댓글 달기 기능(로그인한 사용자만 가능)

회원가입기능

  • user/models.py

    • 비밀번호에는 암호화된 문자열이 들어감으로 max_length를 넉넉히 주었다.
  • user/views.py

    • request에 있는 body를 제이슨 형태로 받았다
    • email과 password는 키값에 의무적으로 넣어두도록 설정을 했다.
    • nick_name 과 phone_number는 get메소드를 활용하여 값이 없을 경우 None을 리턴하게끔 만들었다.
    • 정규식을 사용해서 이메일과 비밀번호 유효성 검사를 진행하였다.
    • 받은 비밀번호를 bcrypt를 사용하여 해싱해서 db에 넣어주었다.
    • 존재했던 이메일이 아니면 User클래스에 객체를 만들게 하였다.
    • db에 성공적으로 넣었다는 의미로 상태코드 201을 보내줬다.
    • 딕셔너리에 존재하지 않는 키(KeyError)를 받으면 상태코드 400을 보내줬다.
  • user/urls.py

    • /signup 을 붙여서 뷰를 가져올수 있게끔 만들었다.

로그인기능

  • user/views.py
    • exists메소드를 사용하여 동일한 이메일을 사용한 객체가 있는지 확인했다.
    • bcrypy.checkpw를 통해 로그인한 비밀번호가 기존의 비밀번호와 같은지 확인했다.
    • 비밀번호 확인까지 끝나면 'success'라는 메세지와 함께 객체의 id가 담긴 token을 발행해 주었다.
    • jwt의 결과물은 pyjwt의 번전에 따라 bytes(ver. 1.7)타입 또는 str(ver. 2.0 이상)타입으로 리턴된다.(여기서는 2.0버전을 사용해서 str로 리턴되었다.)
    • 받아올때

게시물 작성 및 보기 기능

  • postings/models.py
    • user테이블을 정참조하였다.
    • 내용과 사진을 게시물에 넣을 수 있게끔 만들었다.
  • user/utils.py
    • 로그인 데코레이터는 보통 user app에 utils.py를 만들어서 작성합니다.
    • 토큰의 payload에서 아이디가 일치하는 객체를 불러온다.
    • request의 user변수에 객체의 아이디를 담는다.
    • 토큰이 손상되었으면 상태코드 403을 리턴시켜준다.
    • 토큰이 없으면 상태코드 401을 리턴시켜준다.
  • postings/views.py
    • 게시물을 올릴때나 볼때 데코레이션을 달아줘서 인증된 사용자만이 사용할 수 있도록 만들었다.
    • request의 user변수에 보내준 객체아이디를 이용하여 게시물을 생성할때 그 아이디에 맞는 객체를 넣어줬다.
    • values()메소드를 이용하면 쿼리셋으로 데이터 베이스에 담긴 값들을 볼수가 있는데 list()처럼 리스트로 감싸주면 리스트 형태로 바꿔서 볼 수 있다.

댓글 작성, 보기 기능

  • postings/models.py

    • 댓글을 작성할 포스터, 자기자신, 그리고 댓글 내용을 집언넣을 수 있도록 만들었다.
  • postings/views.py

    • 로그인된 사용자만이 댓글을 쓰고 볼 수 있도록 만들었다.
    • 작성할 게시물을 게시물의 내용을 입력하여 그 게시물을 불러올 수 있도록 만들었다.
    • 포스팅한 객체가 존재하지 않으면 'invalid posting'이라는 메세지와 함께 상태코드 401을 리턴해 주었다.
    • request의 user변수에서 받아온 id를 이용하여 user객체를 불러왔다.
    • 댓글을 볼때 values메소드를 사용하여 불러온 값을 리스트로 바꿔주어 리턴해주었다.
profile
나의 개발지식 output 공간

0개의 댓글