[Python] Redoc inline_serializer

2024. 2. 23. 21:50· Python/Docs
목차
  1. 배경
  2. 코드
  3. 설명
728x90

배경

Docs작성을 위해 DRF-Seralizer을 사용하면 자동으로 만들어주지만 기존 DRF-Seralizer는 무거워서 사용중인 view들은  Csutom 해서 사용중입니다. 그러나 Docs를 위해 DRF-Seralizer를 만들 수 는 없는 이유이기에 inline_serializer을 이용하기로 했습니다.

여기서 seriliazer을 전체 한땀한땀 만들기엔 너무 귀찮고 시간이 많이 걸리고 다른 Model을 참조하는 것은 Model들을
왔다 갔다 하면서 귀찮아 주금 아주 시간이 오래 걸립니다.

그래서 원하는 필드값을 받아 inline_seralizer로 만드는 함수를 만들었습니다

inline_serializer는 drf-spectacular 패키지에서 제공하는 유틸리티 함수 중 하나입니다.
이 함수는 기본적으로 OpenAPI 스펙의 components/schemas에 들어가는 inline 시리얼라이저를 생성합니다.

 

코드

from drf_spectacular.utils import inline_serializer


@classmethod
    def get_schema(cls, name, selected_fields: List[str] = None):
        all_fields = {key: cls().fields[key] for key in cls().fields.keys()}
        serializer_fields = {
            key: all_fields[key] for key in all_fields.keys() if key in selected_fields
        } if selected_fields else all_fields

        return inline_serializer(
            name=f'{name}Schema',
            fields=serializer_fields,
            help_text='Place Review Schema'
        )

 

 

설명

selected_fields로 원하는 필드 값을 받아서 inline_serailizer로 받아오기

※ inline_serializer의 name 값이 같으면 같은 inline_serializer로 인식되서 덮어쓰기 됨 > name을 파라미터로 받음

 

https://drf-spectacular.readthedocs.io/en/latest/drf_spectacular.html

 

Package overview — drf-spectacular documentation

© Copyright 2020, T. Franzel. Revision b65ae61c.

drf-spectacular.readthedocs.io

 

저작자표시 비영리 (새창열림)

'Python > Docs' 카테고리의 다른 글

repr  (0) 2025.02.05
[Python] Redoc  (0) 2024.02.21
  1. 배경
  2. 코드
  3. 설명
'Python/Docs' 카테고리의 다른 글
  • repr
  • [Python] Redoc
두잇 두두
두잇 두두
읽기 쉬운 코드를 짜기 위해 노력합니다. 좋은 코드는 단순하고 이해하기 쉬워야 한다고 생각합니다.
두잇 두두
두두 DB
두잇 두두
전체
오늘
어제
  • 분류 전체보기 (135)
    • CS지식 (7)
    • 시스템 설계 (5)
    • 자료구조&알고리즘 (36)
      • 자료구조 (1)
      • 백준 (13)
      • 프로그래머스 (15)
      • 인프런 (2)
    • Python (9)
      • Docs (3)
      • 실험실 (2)
    • Django (36)
      • orm (10)
      • view (3)
      • model (3)
      • admin (3)
      • restframework (13)
      • error (1)
      • utils (2)
    • Java (2)
      • JPA (3)
    • AI (1)
      • AI가 쓴 글 (1)
    • Git (4)
    • Linux (1)
    • 개발자로써 (8)
      • 회고 (1)
    • 문화생활 (0)
      • 여행 (0)
    • 도서📚 (0)
      • 일반 도서 (0)
      • 개발 도서 (0)
    • 프론트 (1)
      • snippet (1)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
두잇 두두
[Python] Redoc inline_serializer
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.