[Series1. DashBoard 만들기] - 15. 회원가입 해보기

django_apps·2021년 9월 27일
0

django apps

목록 보기
15/17
post-thumbnail

회원가입 기능 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

간편하게 usernamepassword 만 입력받게 하였으며, 덤으로 저번 포스팅에서 테스트로 작성하였던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!

profile
django developer

0개의 댓글