회원가입 기능 API 만들기
이번 포스팅에서는 로그인 기능을 만들기 위한 전 단계인 회원가입을 API로 만들어보도록 한다.
처음으로 봐야할 부분은 Model
이다.
velog_series_01/dashboard/dashboard_core/models.py
파일을 열어보자.
# 유저 Model을 정의한다
class PostUser(AbstractUser):
pass
기본적으로 유저정보에 대해 django
에서 템플릿을 제공해주고 있고, 우리는 그것을 가져다가 쓰기만 하기 때문에 위의 몇줄로 유저관련 Model
정의는 끝이다.
그러면, 어떤 데이터가 저장되어 있을까?
위 소스 코드에서 우리는 PostUser
Model을 정의하기 위해서 AbstractUser
클래스를 상속하고 있다.
AbstractUser
를 살펴보면 또 AbstractBaseUser
Model을 상속하고 있음을 알 수 있다.
즉,
class AbstractBaseUser
password
last_login
is_active
↑
class AbstractUser
username
first_name
last_name
email
is_staff
is_active
date_joined
↑
class PostUser
구조가 된다.
이제 View
부분으로 가보자.
velog_series_01/dashboard/dashboard_core/views.py
파일을 열고 아래 소스를 확인한다.
class PostUserViewSet(ModelViewSet):
queryset = PostUser.objects.all()
def get_serializer_class(self):
if self.action == 'list':
return PostUserSerializer
elif self.action == 'create':
return PostUserPostSerializer
elif self.action == 'update':
return PostUserPostSerializer
elif self.action == 'delete':
return PostUserPostSerializer
else:
return PostUserSerializer
저번 포스팅에서도 언급하였지만 PostUserViewSet
클래스가 ModelViewSet
View를 상속하고 있으므로 CRUD
처리가 기본적으로 포함하고 있다.
View
에서 추가적으로 해야할 작업은 없다.
다음은, Serailzer
를 확인해보자.
velog_series_01/dashboard/dashboard_core/serializers.py
class PostUserPostSerializer(serializers.ModelSerializer):
class Meta:
model = PostUser
fields = ("username","password",)
def validate_password(self, value):
if len(value) < 7:
raise serializers.ValidationError("The password has to be at least 7 characters long!")
return value
간편하게 username
과 password
만 입력받게 하였으며, 덤으로 저번 포스팅에서 테스트로 작성하였던password
는 7글자 이상으로 하지 않으면 검증에러가 나게끔 검증로직도 추가되어있다.
자, 마지막으로 urls.py
만 확인하고 테스트 해보자.
이미 DefaultRouter
를 사용하고 있기 때문에
POST
로만 바꿔서 서버로 데이터를 송신하면 된다.
from dashboard_core.forms import PostUserForm
from rest_framework.routers import DefaultRouter
from dashboard_core.views import PostViewSet, PostUserViewSet
router = DefaultRouter()
router.register(r"posts", PostViewSet, basename="post_status")
router.register(r"users", PostUserViewSet, basename="user_status")
이제 서버를 올리고 다음과 같이 Request
를 해보자.
python manage.py runserver
password
를 7글자 이상으로 하고, 문제없이 처리되었다면 아래처럼 등록된 데이터가 클라이언트로 돌아온다.
우리 시스템에 잘 유저가 등록되어있는지 admin
페이지에서 확인해보자.
http://localhost:8000/admin/
DATABASE_CORE
> Users
에 들어가 보면
방금 등록한 유저 데이터가 조회됨을 알 수 있다!
다음 포스팅에서는 Login
기능을 구현해보도록 한다.
Thank you!