Python

· Python
compare to key의 약자로 커스터마이징 된 비교 함수를 정렬에 사용할 수 있게 해주는 도구입니다. Python에서는 기본적으로 sorted() 함수와 list.sort() 메서드에 key 인자를 사용하여 정렬 기준을 지정할 수 있는데, cmp_to_key를 사용하면 이 정렬 기준을 비교 함수 기반으로 정의할 수 있습니다. from functools import cmp_to_key 사용법from functools import cmp_to_key# 문자열 길이를 비교하는 함수def compare_len(s1, s2): return len(s1) - len(s2)# 비교 함수를 key로 변환key_func = cmp_to_key(compare_len)# 문자열 리스트 정렬words = ["app..
def create_openapi_response(*args): ''' key, type, description, format_[optional] ''' properties = {} for arg in args: key, type_, description = arg[:3] format_ = arg[3] if len(arg) > 3 else None items = arg[4] if len(arg) > 4 else None prop = { 'type': type_, 'description': description } if format_: pr..
· Python
배경 예상치 못한 request나 에러가 발생했을 시 raise를 일으킨 후(raise 올리다 ㅎㅅㅎ) 클라이언트에게 알려야 하는데 이 부분을 어떻게 처리할 지 검색을 통해서 알게된 내용을 공유합니다! 코드 user = User.objects.filter(id=user_id).first() try: if not user: raise DoesNotExist(target=User) except DoesNotExist as e: print(e.target, e.message) 설명 try except문으로 감싸고 try 안에서 에러가 발생합니다 except에서 해당 에러 발생 시 값들이 전달되고 return을 통해 클라이언트에게 알려주거나 로그에 남겨주는 방식으로 진행하면 됩니다! 배운 점 에러를 클라이언트에..
배경 Docs response를 만들어주는게 귀찮아서 함수로 파라미터로 받아 dict값을 구현하고자 하였다 코드 def generate_schema(example): properties = {} for key, value in example.items(): properties[key] = {'type': type(value).__name__, 'help_text': 'help_text'} return { 'type': 'object', 'properties': properties, 'example': example, } 설명 type의 경우 의 형태인데 이렇게 되면 출력되지 않으므려 __name__을 사용 but help_text도 구현 하고, array형태나 list형태도 구현 하니까 inline_se..
· Python/Docs
배경 Docs작성을 위해 DRF-Seralizer을 사용하면 자동으로 만들어주지만 기존 DRF-Seralizer는 무거워서 사용중인 view들은 Csutom 해서 사용중입니다. 그러나 Docs를 위해 DRF-Seralizer를 만들 수 는 없는 이유이기에 inline_serializer을 이용하기로 했습니다. 여기서 seriliazer을 전체 한땀한땀 만들기엔 너무 귀찮고 시간이 많이 걸리고 다른 Model을 참조하는 것은 Model들을 왔다 갔다 하면서 귀찮아 주금 아주 시간이 오래 걸립니다. 그래서 원하는 필드값을 받아 inline_seralizer로 만드는 함수를 만들었습니다 inline_serializer는 drf-spectacular 패키지에서 제공하는 유틸리티 함수 중 하나입니다. 이 함수는..
· Python/Docs
배경 회사 내에 문서 작업을 notion으로 했는데 계속 늘어나는 api들을 관리하기 위해 문서를 자동화 해주는 도구를 도입하기로 했습니다. sweager과 redoc중 고민을 했는데 두 개의 차이점이 아래와 같아서 프론트와 협업이 위주인 문서들이라 ReDoc를 사용하기로 결정했습니다. Swagger를 선택할 때: 상호 작용 가능한 API 문서가 필요한 경우. 다양한 기능과 확장성이 중요한 경우. 이미 많은 사용자가 Swagger UI에 익숙한 경우. ReDoc를 선택할 때: 단순하고 빠른 UI가 필요한 경우. 읽기 전용 문서로 제공하면 충분한 경우. React 기반의 동적인 UI를 선호하는 경우. 코드 pip install redoc from redoc import RedocView urlpattern..
두잇 두두
'Python' 카테고리의 글 목록