TIL Day 59.

Jen Devver·2024년 5월 8일

내배캠 TIL

목록 보기
66/91

Django 심화 팀 프로젝트 진행

회원가입 구현

# username, email 중복 검증
if get_user_model().objects.filter(username=username).exists():
	return Response({"error":"이미 존재하는 사용자명입니다."}, status=status.HTTP_400_BAD_REQUEST)

로그아웃 구현

from rest_framework_simplejwt.views import TokenBlacklistView

urlpatterns=[
path("logout/", TokenBlacklistView.as_view(), name="logout")
]
  • TokenBlacklistView를 통해서 가지고 있는 토큰을 무효화해서 로그아웃.
  • 로그인 되어 있는 경우에만 로그아웃이 가능한데 이는 access, refresh token 이 있어야 토큰을 무효화할 수 있기 때문에 로그인이 되어있어야 한다는 조건을 충족함.

유저 페이지 조회 구현

유저 페이지 수정 진행 중

class UserPageAPIView(APIView):
	## 유저 정보 페이지 GET
	def get(self, request, username):
    	user = get_object_or_404(get_user_model(), username=username)
        serializer = UserSerializer(user)
        return Response(serializer.data)
    ## 유저 정보 수정
    def get(self, request, username):
    	user = get_object_or_404(get_user_model(), username=username)
    ## 해당 유저일 때만 수정이 가능함    
        if request.user!=user:
        	return Response({"error":"권한이 없습니다."}, status=status.HTTP_403_FORBIDDEN)
    ## 소개, 비밀번호만 수정하기
    user.introduction = request.data.get("introduction", user.introduction)
    user.password = request.data.get("password", user.password)
    ## 비밀번호를 빈칸으로 제출 불가
    if not user.password:
    	return Response({"message":"비밀번호를 입력해 주십시오."}, status = status.HTTP_400_BAD_REQUEST)
        
    ## 비밀번호 설정, 입력 받은 데이터 저장
    user.set_password(user.password)
    user.save()
    return Response(status=status.HTTP_204_NO_CONTENT)
  • 유저 정보 수정 부분의 경우 serializer를 이용하지 않고 구현함.
  • 해야할 부분: 작성글, 좋아요한 글, 즐겨찾기한 글을 소개 페이지에 보이도록 해야 함. / 유저 본인일 때와 아닐 때 소개 페이지에 보이는 항목을 달리 해야 함.
profile
발전 중...

0개의 댓글