_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

woncoding/TIL

TIL | 12.13.화 [DRF ↔️ JS CRUD]

2022. 12. 13. 23:07

- 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(조건)

 

 

 

 

- 참고 자료

https://ssungkang.tistory.com/entry/Django-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%A1%B0%ED%9A%8C-queryset

 

[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
    'woncoding/TIL' 카테고리의 다른 글
    • TIL | 12.15.목 [DRF / Deep Learning / JS]
    • TIL | 12.14.수 [DRF ↔️ JS CRUD]
    • TIL | 12.12.월 [DRF ↔️ JS CRUD]
    • TIL | 12.9.금 [DRF ↔️ JS CRUD]
    _won_
    _won_
    Coding Practice blog

    티스토리툴바