Westagram -2

홍태경·2021년 4월 10일
0

westartgram-2 의 목적 : 회원가입

[Mission 2] 회원가입 엔드포인트

회원가입 뷰를 작성해주세요.
생성한 사용자 클래스를 불러옵니다.
한 번에 모든 클래스를 import 해서는 안됩니다.
내가 사용할 클래스를 정확히 지칭해주세요

인스타그램에 회원가입 할 때에는 사용자 계정(이메일)을 필수로 필요합니다.
인스타그램에 회원가입 할 때에는 비밀번호도 필수로 필요합니다.

이메일이나 패스워드 키가 전달되지 않았을 시, {"message": "KEY_ERROR"}, status code 400 을 반환합니다.

회원가입시 이메일을 사용할 경우, 이메일에는 @와 .이 필수로 포함되어야 합니다. 해당 조건이 만족되지 않을 시 적절한 에러를 반환해주세요. 이 과정을 email validation이라고 합니다.

회원가입시 비밀번호는 8자리 이상이어야만 합니다. 해당 조건이 만족되지 않을 시, 적절한 에러를 반환해주세요. 이 과정을 password validation이라고 합니다.

회원가입시 서로 다른 사람이 같은 전화번호나 사용자 이름, 이메일을 사용하지 않으므로 기존에 존재하는 자료와 중복되어서는 안됩니다. 적절한 에러를 반환해주세요.

회원가입이 성공하면 {"message": "SUCCESS"}, status code 201을 반환합니다.
[추가 구현 사항] -> email validation 또는 password validation 과정에서 정규식을 사용해보세요.

2-1 models.py를 통해 db 구현

from django.db import models
# Create your models here.

class Userinfo(models.Model):
    
from django.db import models

# Create your models here.

class Userinfo(models.Model):

    Name        = models.CharField(max_length=50,unique=True)
    phone_num   = models.CharField(max_length=50,default=0)
    email       = models.CharField(max_length=50,unique=True default=0)
    password    = models.CharField(max_length=50,unique=True)
   
	 def __str__(self):
        return f'{self.name}'

    class Meta:
        db_table='userinfo'
  • 회원가입을 위해 name, email, password,phone_num 컬럼을 설정해줬다.

  • 중복을 제거하기 위해 Unique를 셋팅해주었다.

  • str 해줌으로서 shell에서 검색했을 때, 리턴 받는 형식을 정해준다

  • class Meta = db_table 실제 데이터베이스에서 보여지는 테이블 이름 소문자+복수형으로

user/Views.py로 api 로직 구현

import json
import bcrypt
import jwt

from django.http import HttpResopnse, JsonResponse
from djaogn.views import View
from django.db.models import Q
from django.core.validators import validate_email, ValidationError

from .models import Userinfo

  • import json : 클라이언트에서 요청한 data는 json 방식이다 파이썬을 json형식으로 보내려면 import json을 해주어야 한다.

  • import bcrypt, jwt 인증 인가시 필요

  • bcrypt는 복호화를 막기 위해 단방향 해쉬로 만드는 암호화 작업시에 필요한 알고리즘이다. 암호를 한층 강하하기 위해 request할떄 salting을 넣어서 보내준다.

  • jwt : 한번 인증이 완료된 사람이 로그인을 시도할 시 서버에서는 많은 절차가 이루워진다
    그것을 줄이기 위해 클라이언트에게 토큰을 발행시키고 토큰만 보고 로그인을 시켜준다

  • from django.http import HttpRespose, JsonResponse

json과 비슷하다 클라이언트에서 받은 자바형식의 json으로 받았기 때문에 서버도 자바형식으로 보내줘야 한다 그때 필요한 모듈이다

- django.views import View

view에서 view 내장함수를 불러오는것이 이해가 안되서 다른 글을 참조하였다.

  • 우리가 단순히 Post를 구현할 뿐이지만 urls와 연결이 되고 이러는것이 모두 views에 있기 때문이란다 그리고 POST를 구현하면 'def POST(VIEW)' 되어있는데 이게 다 django에서 구현한 VIEW를 상속받아서 쓰기 때문에 넣어준 것이다. 항상 쓸 때 감사하면서 쓰면된다.

- from django.db.models, from django.db.cres import validation

  • 로그인과 회원가입을 구현하기 위해서 추가적으로 쓰기 위함.

- from .models import Userinfo

  • models 와 연동해서 만들었던 Userinfor를 불러우기 위해서 사용
profile
나의 에고를 인정하고 사랑하자

0개의 댓글