https://github.com/Kyuho09/spartamarket_DRF
트러블 슈팅
상품 목록 조회, 상품 디테일 페이지 조회는 로그인 상태가 불필요.
하지만 지금은 모든 기능이 로그인 상태를 필요로 하고 있음.
from rest_framework.views import APIView
from rest_framework.response import Response
from django.shortcuts import get_object_or_404
from .models import Product
from .serializers import ProductSerializer
from rest_framework.permissions import IsAuthenticated
from rest_framework import status
class ProductListView(APIView):
permission_classes = [IsAuthenticated]
def post(self, request):
title = request.data.get("title")
content = request.data.get("content")
product = Product.objects.create(title=title, content=content, user=request.user)
serializer = ProductSerializer(product)
return Response(serializer.data, status=status.HTTP_201_CREATED)
def get(self, request):
products = Product.objects.all()
serializer = ProductSerializer(products, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
class ProductDetailView(APIView):
def get(self, request, pk):
product = get_object_or_404(Product, pk=pk)
serializer = ProductSerializer(product)
return Response(serializer.data, status=status.HTTP_200_OK)
permission_classes = [IsAuthenticated]
def put(self, request, pk):
product = get_object_or_404(Product, pk=pk)
if product.user != request.user:
return Response({"message": "해당 게시글을 수정할 권한이 없습니다."}, status=status.HTTP_403_FORBIDDEN)
serializer = ProductSerializer(product, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk):
product = get_object_or_404(Product, pk=pk)
if product.user != request.user:
return Response({"error": "해당 게시글을 삭제할 권한이 없습니다."}, status=status.HTTP_403_FORBIDDEN)
product.delete()
return Response({"message": "게시글이 삭제되었습니다."}, status=status.HTTP_204_NO_CONTENT)
아직 해결 못함.
오늘의 회고
개인 과제 중...
얼른 마무리하고 문서작업 해야하는데.
내일 파이팅해보자.
'매일 TIL' 카테고리의 다른 글
[내일배움캠프 12-3일] django 심화과제 시작, 와이어프레임, ERD, API 명세서 (0) | 2024.09.11 |
---|---|
[내일배움캠프 12-2일] django 개인과제 마무리, 트러블 슈팅(해결) (1) | 2024.09.10 |
[내일배움캠프 11-5일] django 개인과제, accounts 구현 (0) | 2024.09.08 |
[내일배움캠프 11-4일] django 심화 복습 (1) | 2024.09.05 |
[내일배움캠프 11-3일] 외부 API 연동, Django Deploy with AWS, ec2,Gunicorn (0) | 2024.09.04 |