[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 내장함수를 불러오는것이 이해가 안되서 다른 글을 참조하였다.
- from django.db.models, from django.db.cres import validation
- from .models import Userinfo