Backend/Django
-
[Django][DRF] Django View 함수를 DRF VieSet 으로 변형하기 (FBV -> CBV)Backend/Django 2025. 3. 9. 23:44
과제 목표"왜 모두 ViewSet을 사용할까?"지난해, 웹 개발자로 첫 프로젝트를 마주했을 때 Django의 Function-Based View(FBV)는 나에게 '안전한 선택'이었다. 직관적인 요청-응답 구조와 익숙한 방식이었기 때문이다. 하지만 상사들의 코드 중 최근에 작성된 코드일수록 DRF ViewSet이 빈번히 등장하는 것을 보며 언제 ViewSet을 사용하는 것이 좋은 것일까 라는 의문이 생겼다.DRF 적응기 + 언제 ViewSet을 도입해야 하는가에 대한 판단력 기르기"DRF의 Tutorial 을 1회 따라하고 난 지금, 단순히 이론으로만 알고 있던 'ViewSet의 장점'을 직접 (반half)실전을 통해 체감해보고 싶다는 생각을 하게 되었다. 기존 코드 (삽입)즐겨찾기 등록(삽입)사용자마다..
-
[DRF] Serializer 기본Backend/Django 2025. 2. 16. 15:01
https://www.youtube.com/watch?v=SBnUs18rvUw직렬화: Web server 와 사용자 사이에서 주고 받는 data 를 사용하기 편하도록 '직렬의 형태'로 표현하는 것. 여기서 '직렬의 형태' 란 json 이나 dict (OrderedDict, ReturnDict...) 처럼 한 줄로 주르륵 표현할 수 있는 형태를 의미함.ex)Students={[ { 'name': 'Tom', 'age': 14, 'blood_type': 'B', 'height': 180, 'weight': 75, 'contact': '010-.......' }, { 'name': 'Julie', ..
-
[QuerySet] Django 의 DB 접근법 (2): Eager Loading (부제: DB 최적화 전략)Backend/Django 2025. 1. 5. 23:47
작성 계기'Django 의 DB 접근법' 이란 제목의 글을 작성하게 된 핵심 계기는 바로 아래의 동영상 강의이다.Django ORM (QuerySet)구조와 원리 그리고 최적화전략 - 김성렬 - PyCon Korea 2020위 영상을 보고 Django 의 DB 접근 방식을 처음으로 접하게 되었고 새로 얻게 된 지식을 완벽히 흡수하고 싶었다. 이를 위해 영상을 다시 나만의 글로 작성하는 방식을 채택하게 되었다.본문Eager Loading 즉시 평가DB data 를 사용하는 code 실행과 동시에 SQL 문이 실행되어 원하는 객체를 바로 메모리에 로드하는 방식. Django 의 QuerySet 은 Eager Loading 을 지원하는 `select_related()` 와 `prefetch_re..
-
[QuerySet] Django 의 DB 접근법 (1): Lazy loadingBackend/Django 2024. 11. 10. 23:19
Django 공부를 위해 Youtube 를 뒤지다가 아래의 영상을 발견하게 되었다.Django ORM (QuerySet)구조와 원리 그리고 최적화전략 - 김성렬 - PyCon Korea 2020영상은 Django 의 ORM 은 성능 효율을 높이기 기본적으로 DB 접근 횟수를 줄이는 Lazy loading 을 사용한다로 시작한다. 아직 '성능' 이 중요한 줄은 알지만 향상시키는 방법은 덜 익숙한 나에게 흥미로운 도입부였다. 그렇게 해당 영상을 시작으로 QuerySet 의 동작 원리를 파고들게 되었다.Lazy Loading 지연 평가QuerySet 객체 생성(선언)을 했더라도 SQL 문(=Query)이 실제로 실행되는 시점은 해당 객체가 실사용되는 때(='평가' 라고도 한다.)이다.QuerySet..
-
filter() - fields loopkups(**kwargs), Q objects(**args)Backend/Django 2023. 12. 3. 17:12
Clone Coding을 하다가 생각없이 사용 중이던 filter() 함수의 사용법을 좀 더 깊게 파보고자 공식 문서를 살펴 보았다. filter() https://docs.djangoproject.com/en/4.2/ref/models/querysets/#filter QuerySet의 Member method 로 lookup parameter를 충족하는 객체들만 모아 새로운 QuerySet 을 생성하여 반환한다. 즉 DB에서 특정 조건(lookup parameter)들로 조회하여 나온 결과를 다시 Model Instance로 생성하여 QuerySet에 담아 반환한다고 볼 수 있다. 조건을 지정하는 방식으로는 field lookups(kwargs에 대입) 와Q object(args에 대입) 가 있다. 여..
-
VS Code에서 Django Debug 설정Backend/Django 2023. 10. 15. 22:54
2023.10.15 Pycharm에서 Django 디버그 를 진행했던 것처럼 VS Code에서 도 Django Debug가 가능한 설정을 진행하려고 함. 참고: https://code.visualstudio.com/docs/python/tutorial-django Python and Django tutorial in Visual Studio Code Python Django tutorial demonstrating IntelliSense, code navigation, and debugging for both code and templates in Visual Studio Code, the best Python IDE. code.visualstudio.com 1. Python Interpreter를 Vi..
-
PyCharm에서 Django 디버그 모드 활성화하기Backend/Django 2023. 10. 10. 23:45
PyCharm 2019.3.5(Professional) 기준 작성 됨. Settings(Ctrl+Alt + S) - Languages & Frameworks - Django ‘Enable Django Support’ 체크 ‘Django project root:’ 에 디버깅할 프로젝트의 최상위 경로 입력 ‘Settings:’ 에 디버깅할 프로젝트의 config/settings. 경로를 입력 끝. OK 클릭 Edit Configuration (상단 메뉴의 Run 하위에 있음.) ‘+’ 버튼 클릭 → Django server 선택 Name은 선택사항. 끝. OK 클릭 디버그 모드 시작하면 python manage.py runserver 부터 실행함. (따로 웹 서버 구동할 필요 x) 원하는 지점에 중단점 찍고..
-
class MetaBackend/Django 2023. 9. 18. 18:32
class Meta django Model에 metadata를 추가하는 기능을 제공. (metadata: 데이터를 설명하는 데이터, 또는 데이터를 목적에 따라 재구성한 데이터) 사용자가 직접 추가하는 Model의 속성(필드)은 매 번 바뀔 수밖에 없다. 그러나 Model의 속성들을 '정렬(ordering)' 하거나, 'DB Table의 이름(db_table)'을 짓거나 어떤 속성의 '복수형 표현(verbose_name, verbose_name_plural)'을 지정하거나 하는 등 일부 사용법들은 대부분의 Model에서 필요하다. 이처럼 Model을 관리할 때 공통적으로 필요한 사용법들의 구체적인 방식을 지정하도록 해주는 것이 class Meta이다. (..라고 나는 이해했다.) 자주 쓰이는 Meta op..