- Django Rest Framework
Front JS CRUD
[Pagination 설정]
- 모든 사용자들이 작성한 게시글을 가져오는 view를 이용해 JS에서 로그인된 유저가 작성한 게시글만 넣어두는 변수를 따로 설정해 게시글을 가져오게 만들어 줬다.
- 문제점 : 모든 사용자들이 작성한 게시글을 가져오는 view를 이용해 3게시글을 1페이지로 가져오는 페이지 네이션을 사용하다보니 조건을 설정해 특정 유저가 작성한 게시글만 보인다고 하더라도 게시글이 한 페이지로 순차적으로 모아지지 않고, 전제 게시글을 가져왔을때 있던 페이지에 머물러 있는 문제점을 발견
- 해결 방법 : 모든 사용자들이 작성한 게시글을 가져오는 view가 아닌 쿼리셋 조건문 filter 등을 이용해 새로운 view를 정의해준 뒤 JS에서 로그인된 유저가 작성한 게시글만 넣어두는 변수를 따로 설정하지 않고 불러와줬다. (이미 백엔드에서 정의가 되어있으니 프론트에서 재정의 해 줄 필요가 없음)
class ProfileArticleView(APIView, PaginationHandlerMixin):
pagination_class = ArticlePagination
serializer_class = WorrySerializer
def get(self, request, category_id):
if 0 < category_id < 9 :
category_list = ['음식','취미','취업','일상','투자','연애','스포츠','연예']
category = category_list[category_id - 1]
elif category_id >= 9:
mbti_list = ['ENFP','ENFJ','ENTP','ENTJ','ESFP','ESFJ','ESTP','ESTJ',
'INFP','INFJ','INTP','INTJ','ISFP','ISFJ','ISTP','ISTJ']
mbti = mbti_list[category_id - 9]
if category_id == 0:
articles = Article.objects.filter(user = request.user)
elif category_id < 9:
articles = Article.objects.filter(category = category, user = request.user)
else:
articles = Article.objects.filter(mbti=mbti, user = request.user)
page = self.paginate_queryset(articles)
if page is not None:
serializer = self.get_paginated_response(self.serializer_class(page, many=True).data)
else:
serializer = self.serializer_class(articles, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
👉 Model.object.filter(조건)
- 참고 자료
[Django] 데이터베이스 조회, queryset
이번 시간에는 데이터베이스에 저장되어 있는 데이터를 불러오는 방법에 대해서 알아보도록 하겠습니다. queryset 이란 이를 위해 빼놓을 수 없는 개념이 바로 queryset 입니다. query 란 데이터베이
ssungkang.tistory.com
https://velog.io/@dlwpdlf147/Django-Framework-Query-Set
Django Framework - Query Set
Django의 Query문 총망라
velog.io
'woncoding > TIL' 카테고리의 다른 글
| TIL | 12.15.목 [DRF / Deep Learning / JS] (0) | 2022.12.16 |
|---|---|
| TIL | 12.14.수 [DRF ↔️ JS CRUD] (0) | 2022.12.15 |
| TIL | 12.12.월 [DRF ↔️ JS CRUD] (0) | 2022.12.13 |
| TIL | 12.9.금 [DRF ↔️ JS CRUD] (0) | 2022.12.11 |
| TIL | 12.8.목 [DRF ↔️ JS CRUD] (0) | 2022.12.09 |