# articles > views.py
serializer.save(article=article) 여기에서
article=article 이거는 외래키이다.
@api_view(['POST'])
def comment_create(request, article_pk):
# 게시글 조회
article = Article.objects.get(pk=article_pk)
# 사용자 입력 데이터를 받아 직렬화 진행
serializer = CommentSerializer(data=request.data)
# 유효성 검사
if serializer.is_valid(raise_exception=True):
serializer.save(article=article)
return Response(serializer.data, status=status.HTTP_201_CREATED)
더보기
from rest_framework.response import Response
from rest_framework.decorators import api_view
from rest_framework import status
from .serializers import ArticleListSerializer, ArticleSerializer, CommentSerializer
from .models import Article, Comment
@api_view(['GET', 'POST'])
def article_list(request):
if request.method == 'GET':
articles = Article.objects.all()
serializer = ArticleListSerializer(articles, many=True)
return Response(serializer.data)
elif request.method == 'POST':
serializer = ArticleSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
# return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['GET', 'DELETE', 'PUT'])
def article_detail(request, article_pk):
article = Article.objects.get(pk=article_pk)
if request.method == 'GET':
serializer = ArticleSerializer(article)
return Response(serializer.data)
elif request.method == 'DELETE':
article.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
elif request.method == 'PUT':
serializer = ArticleSerializer(
article, data=request.data, partial=True
)
if serializer.is_valid(raise_exception=True):
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
# return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['GET'])
def comment_list(request):
# 전체 댓글 조회
comments = Comment.objects.all()
# 직렬화 진행
serializer = CommentSerializer(comments, many=True)
return Response(serializer.data)
@api_view(['GET'])
def comment_detail(request, comment_pk):
# 단일 댓글 조회
comment = Comment.objects.get(pk=comment_pk)
# 직렬화 진행
serializer = CommentSerializer(comment)
return Response(serializer.data)
@api_view(['POST'])
def comment_create(request, article_pk):
# 게시글 조회
article = Article.objects.get(pk=article_pk)
# 사용자 입력 데이터를 받아 직렬화 진행
serializer = CommentSerializer(data=request.data)
# 유효성 검사
if serializer.is_valid(raise_exception=True):
serializer.save(article=article)
return Response(serializer.data, status=status.HTTP_201_CREATED)
# articles > serializers.py
더보기
from rest_framework import serializers
from .models import Article, Comment
class ArticleListSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ('id', 'title', 'content',)
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = '__all__'
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
fields = '__all__'
read_only_fields = ('article',)
# 서버 켜기
save all
python manage.py runserver
# 포스트맨에 요청하기
http://127.0.0.1:8000/api/v1/articles/1/comments/
201 ok 응답을 받아서 잘 되었다
'WEB > Django prac' 카테고리의 다른 글
[Django prac][DRF with N:1 Relation] 9. (0) | 2024.04.16 |
---|---|
[Django prac][DRF with N:1 Relation] 8. (0) | 2024.04.16 |
[Django prac][DRF with N:1 Relation] 6. (0) | 2024.04.16 |
[Django prac][DRF with N:1 Relation] 5. (0) | 2024.04.16 |
[Django prac][DRF with N:1 Relation] 4. (0) | 2024.04.16 |