본문 바로가기

Django/DRF

(6)
[DRF] queryset과 get_queryset()의 차이점 본인은 DRF 라이브러리에서 viewsets과 mixin 기능을 사용해서 API 개발을 자주한다. 클래스형 view를 개발하다보면, def get_queryset(self):​ 이라는 함수를 클래스 내에 내장하는 경우가 있는데 class API(mixin.어쩌고, viewsets.어쩌고): queryset = 어쩌고 . . .​ 위의 코드 처럼 queryset을 기본적으로 사용할 것이다. 그러면 get_queryset 함수는 왜 사용해야할까? queryset VS get_queryset() 분명 queryset과 get_queryset()은 같은 동작을 한다. 하지만, 필터의 값이 동적일 경우 잘못된 쿼리가 나올 수 있다. # 필터의 값이 동적일 경우 잘못된 쿼리가 나올 수 있음 # (X) class L..
[Django] DecimalField DecimalField 10 진수 표현으로, python에서 Decimal 인스턴스로 나타낸다. django.db.models.fields.DecimalField에 해당한다. FloatField는 소수점의 근사값을 제공하지만 DeciamalField는 소수점 자리를 설정해서 원하는 자릿수만큼 출력이 가능하다. 1. 구성 인자 DecimalField(max_digits, decimal_places, coerce_to_string=None, max_value=None, min_value=None) max_digits : 숫자에 허용되는 최대 자릿수를 말하며, None이거나 decimal_places보다 크거나 같은 정수여야 함 decimal_places : 숫자와 함께 저장할 소수 자릿수를 말함 coerce..
[Django rest Framework] get_object() get_object() 메서드는 무엇인가? : pk로 queryset을 필터링 하고, 필터링을 통해 queryset에서 pk에 맞는 object를 return 시켜주는 메서드이다. 비교 # DRF get_object() first = self.get_object() # Django ORM second = Second.objects.get(pk=pk) 위 두가지 예시의 코드들은 같은 역할을 한다고 생각하면 쉽다. get_object() # get_object 소스 코드 def get_object(self, queryset=None): """ Returns the object the view is displaying. By default this requires `self.queryset` and a `pk..
[Django rest Framework] Swagger 문서 자동화 ( drf-yasg ) Swagger REST API를 설계, 빌드, 문서화 및 사용하는데 도움이 되는 OpenAPI 사양을 중심으로 구축 된 오픈 소수 도구 세트입니다. Django 프레임워크에서는 drf-yasg 라이브러리를 이용하여 python 코드로 더욱 쉽게 문서 자동화가 가능하다. https://drf-yasg.readthedocs.io/en/stable/ drf-yasg — drf-yasg 1.20.1 documentation © Copyright 2018, Cristi V. Revision 1795ed15. drf-yasg.readthedocs.io https://github.com/axnsan12/drf-yasg/tree/master/testproj GitHub - axnsan12/drf-yasg: Automa..
[Django rest framework] TDD - Unit Test 먼저, 사전과제 개발을 진행하면서 필요하다고 느낀 테스트 코드에 대해서 작성할 것입니다. 틀린 점이 있을 수 있습니다. Django rest framework 라이브러리로 개발을 해오면서 API가 제대로 동작하는지 Postman을 사용하여 확인하였지만, API가 많아질 수록 손수 테스트하기 어려워지기 때문에 테스트 코드를 작성해야 한다. Unit Test : 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트이다. 즉, 내가 작성한 코드의 가장 작은 단위인 함수를 테스트 하는 메소드이다. Unit Test가 무엇인가? : 파이썬에는 unittest 라는 유닛테스트를 가능하게 해주는 모듈이 포함되어있다. unittest 외에도 pytest 라는 패키지도 있지만 장고에서는 기본적으로 unit..
[Django] ContentType 모델링을 설계하다보면 ManyToMany 필드처럼 클래스 모델을 추가로 생성하지 않고, 한 모델이 여러 개의 모데로가 관계를 맺어야 하는 경우가 있다. 예를 들어, 댓글이나 좋아요와 같은 기능을 구현할 때 주로 사용된다. class Post(models.Model): # 생략 class Comment(models.Model): # 생략 class Like(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE) comment = models.ForeignKey(Comment, on_delete=models.CASCADE) 다양한 모델링이 있지만, Like 를 PostLike 와 CommentLike 로 나눌 수 있고 방법은 다양하다...