본문 바로가기
TTL/13주차 ~ 16주차 TIL (11.21 ~ 12.16)

2022-12-05 TIL (출석시스템 만들어 보기)

by dev_junseok 2022. 12. 6.

오늘은 사이트 이용자가 사이트에 로그인 한 후, 출석체크 버튼을 누르면 1포인트를 지급하는 시스템을 만들어 보았다.

 

#views.py

class GetPointView(APIView): # 출석 포인트 View (하루에 한번 가능)
    permission_classes = [permissions.IsAuthenticated]
    authentication_classes = [JWTAuthentication]

    def post(self, request, user_id):
        now = datetime.today().strftime("%Y-%m-%d")
        user= get_object_or_404(User, id=user_id)
        if user == request.user:
            if user.click_time == now:   
                return Response({"message":"이미 출석을 하셨습니다."}, status=status.HTTP_400_BAD_REQUEST)
            else:
                user.click_time = now
                user.point += 1
                user.save()
            return Response({"message":"출석점수 1점을 획득하셨습니다."}, status=status.HTTP_200_OK)
        return Response({"message":"권한이 없습니다."}, status=status.HTTP_400_BAD_REQUEST)

click_time은 하루에 한번만 클릭할 수 있게 체크하도록 user 모델에 만들어 둔 필드이다.

 

point는 IntegerField를 사용하여 만들 필드이다.