카테고리 없음

Django 간단한 회원가입

rlarudals 2024. 11. 20. 16:07

간단한 회원가입

 

models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.
class User(AbstractUser):
    created_at = models.DateTimeField(auto_now_add=True)  # 생성 시각 자동 기록
    updated_at = models.DateTimeField(auto_now=True)      # 수정 시각 자동 갱신

    def __str__(self):
        return self.username

 

serializers.py

from rest_framework import serializers
from .models import User

# 회원가입
class SignupSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'
        # 필요한 필드만 포함시키려면
        # fields = ['id', 'username', 'email', 'created_at', 'updated_at']

        # 특정 필드를 제외시키려면
        # exclude = ['field 명']

 

views.py

from django.shortcuts import render
from django.contrib.auth import get_user_model
from rest_framework import status
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated, AllowAny
from .serializers import SignupSerializer

User = get_user_model() # 필수 지우면 안됨

# 회원가입
class SignupAPIView(APIView):
    permission_classes = [AllowAny]

    def post(self, request):
        serializer = SignupSerializer(data=request.data)  # 요청 데이터
        if serializer.is_valid():
            user = serializer.save()
            # serializer.save()  # 데이터 저장
            return Response({"message": f"{user.username} 회원가입이 완료되셨습니다!"}, status=status.HTTP_201_CREATED)
        return Response({"message" : "회원가입에 실패하셨습니다"}, status=status.HTTP_400_BAD_REQUEST)
           

 

urls.py

from django.urls import path
from . import views
from .views import (
    SignupAPIView,
)

app_name = 'tests'

urlpatterns = [
    path("signup/", SignupAPIView.as_view(), name="signup"), # 회원가입
]

 

postman 에서 실행

다시 회원가입 하면