https://github.com/Kyuho09/spartamarket_DRF
GitHub - Kyuho09/spartamarket_DRF
Contribute to Kyuho09/spartamarket_DRF development by creating an account on GitHub.
github.com
트러블 슈팅
상품 목록 조회, 상품 디테일 페이지 조회는 로그인 상태가 불필요.
하지만 지금은 모든 기능이 로그인 상태를 필요로 하고 있음.
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 |