# views.py
class ArticleView(APIView):
def get(self, request): # 전체 리스트 먼저 생각해보면 모든걸 들고온다 404 or get.all
articles=Article.objects.all()
serializer = ArticleSerializer(articles, many=True) #사용자에게 보여준다 serial 필요 만들어줌 뭐보여줄지 정해줄수도 있음
return Response(serializer.data, status=status.HTTP_200_OK)
def post(self, request): # 생성
pass
처음엔 class형 view 를 만들면서 각각의 메소드를 어디에 사용할지 생각을 했다.
user가 get을 요청하면 user에게 보여줄 정보는 게시글의 리스트였고 모든 리스트를 articles로 들고오고 serializer로 사용자에게 보여주게 했다.
[
{
"id": 1,
"title": "게시물 추가요",
"content": "ㅊㅋㅊㅋ",
"image": "/media/IMG_4540.JPG",
"created_at": "2022-10-31T11:40:16.029436Z",
"updated_at": "2022-10-31T11:40:16.029468Z",
"user": 8
},
{
"id": 2,
"title": "123",
"content": "123",
"image": "/media/2022/10/IMG_4874.JPG",
"created_at": "2022-10-31T12:06:39.452559Z",
"updated_at": "2022-10-31T12:06:39.452577Z",
"user": 7
}
]
직렬화된 JSON형태로 보내지는걸 확인 할 수 있었다 하지만 여기서 내가 보내고싶은 정보를 따로 정해주기위해서는 필요한 serializer를 다시 만들어 줄 필요가 있었다.
# views에서 ArticleView get보니까 serialize 필요하네
class ArticleListSerializer(serializers.ModelSerializer):
class Meta:
model=Article
fields = ("pk","title","image","updated_at","user")
내가 원하는 정보만 주기위해서 ArticleListSerializer 새로 만들어주고 fields를 정해줬다.
class ArticleView(APIView):
def get(self, request): # 전체 리스트 먼저 생각해보면 모든걸 들고온다 404 or get.all
articles=Article.objects.all()
serializer = ArticleListSerializer(articles, many=True) #사용자에게 보여준다 serial 필요 만들어줌 뭐보여줄지 정해줄수도 있음
return Response(serializer.data, status=status.HTTP_200_OK)
def post(self, request): # 생성
pass
serializer를 바꿔주고 포스트맨으로 get한 결과는
[
{
"pk": 1,
"title": "게시물 추가요",
"image": "/media/IMG_4540.JPG",
"updated_at": "2022-10-31T11:40:16.029468Z",
"user": 8
},
{
"pk": 2,
"title": "123",
"image": "/media/2022/10/IMG_4874.JPG",
"updated_at": "2022-10-31T12:06:39.452577Z",
"user": 7
}
]
content를 없앤 보내고 싶던 정보만 보내지는걸 확인할 수 있었다.
'TIL' 카테고리의 다른 글
[IntegrityError, Not NULL constraint failed] (0) | 2022.11.01 |
---|---|
기본개념 | argument, parameter (0) | 2022.11.01 |
DRF 기본 | 기본기를 닦자 | Django REST framework 정독 (0) | 2022.10.30 |
DRF 연습 | Error: that port is already in user. (0) | 2022.10.27 |
NoReverseMatch | DRF 연습중 에러 (0) | 2022.10.27 |