drf로 회원가입 만들기
pure django복습 겸 프로세스 이해를 위한 정리.

  • settings.urls에 app의 urlpatterns 추가
  • include import 해주기
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('users/', include('users.urls')),
]
  • app.urls.py에 views import하고 urlpatterns 추가하기
from django.urls import path, include
from rest_framework_simplejwt.views import (
    TokenObtainPairView,
    TokenRefreshView,
) #jwt
from users import views 

urlpatterns = [
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    # 위 두 줄은 jwt를 위한 것
    path('signup/', views.UserView.as_view(), name='user_view'),
]
  • views.py에서 UserView class 만들기
from rest_framework.views import APIView
from rest_framework import status
from rest_framework.response import Response
from users.serializers import UserSerializer

class UserView(APIView):
    def post(self, request):
      serializer = UserSerializer(data=request.data) #serializer.py에서 가져옮.
      if serializer.is_valid():
          serializer.save()
          return Response({"message":"가입 완료!"}, status=status.HTTP_201_CREATED)
      else:
          return Response({"message":f"${serializer.errors}"}, status=status.HTTP_400_BAD_REQUEST)
  • serializes.py에서 Userserializer만들기
from rest_framework import serializers
from users.models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = "__all__"

중요한 점

serializers.py

# 여기가 중요★★★ 해싱을 해줘야 data에서 password를 암호화해서 저장함.
    def create(self, validated_data):
        user = super().create(validated_data)
        password = user.password
        user.set_password(password)
        user.save()
        return user

이 함수가 없으면 회원가입을 할 때 password가 암호화되지 않고 그대로 저장되어 로그인 시 인식하지 못함!!
해싱을 해줘야 암호화되어 DB에 저장 가능!

profile
가보자고

0개의 댓글

관련 채용 정보