MVT 패턴, django. MDN에서는 "보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 주는 파이썬 웹 프레임워크" 라고 소개한다.
Django에서 DB를 ORM으로 다루는 방법!. mysite/settings.py 에서 기본적으로 sqlite. SQLite는 Python에서 기본으로 제공되기 때문에 별도로 설치할 필요가 없다.
실제 모델을 만들고, 마이그레이션 파일을 만들어 해당 '앱'의 'schema version'을 만들고 마이그레이션을 하며, model들의 관계설정으로 django ORM 맛보기를 실제 DB 데이터와 비교하면서 진행해보자!
장고 Model - ORM에서 사용하는 Field 리스트 살펴보기. 장고 모델 - 필드 공식 문서와 사용 경험과 다른 문서를 참조해서 총 망라 형식으로 정리했습니다.
ORM 컨셉과 RDB에 대해 조금 더 알아보자. 그리고 django model - orm에서 PK, FK, UNIQUE 등의 index처리를 너무 depth있게 살펴보기 보다 전체 그림에서 포인트만 잡아보자!
장고 ORM에서 query의 결과값으로 queryset 의 instance로 준다. 여기서 살펴봐야 할 "정참조, 역참조"를 기반으로 select_related, prefetch_related, related_names 에 대해서 자세하게 살펴보자.
Queryset 에 objectjs 로 접근해 "filter", "get" 등의로 질의의 조건을 만들 수 있다. 다음 시리즈 Query Expressions 1, Query Expressions 2 게시물에서 조금 더 깊은 내용을 같이 고찰할 수 있다.
django는 대표적으로 MVC(MVT) 디자인 패턴을 가지고 있다. model과 database는 보앗으니 controller(Routing - path)와 View(template)를 살펴보자.
template 에서 Django Back-end로 http request를 보내보자. Asynchronous JavaScript and XML를 안다면 비동기식과 동기식을 알것이다. Form tag와 같이 submit action을 하는 동기식 이벤트 기반으로 고고
완성된 것을 테스트하는 것도 개발의 일부이다. 사용자 테스트, 단위 테스트(Unit test) 등의 많은 테스트 단위가 있다. Junit, Jest 등의 라이브러리도 존재한다. Django에서는 어떻게 그런 테스트를 진행하는지 살펴보자.
Django의 강력한 장점인 admin page 자동 생성. 그리고 form을 커스텀을 정해진 규칙 내에서 확실하게 있다. 또한 style (look&feel)또한 틀안에서 가능하다. 그 부분을 어떻게 해야할지 살펴보자!
Django admin도 계속 UX 개선을 해야한다! 간단한 프로젝트로 django에서 admin custom을 하는 접근방법에 대해 알아보자. 더 다양한 `Detail form`, `Search`, `Filter`, `Custom Template` 를 다룰 것이다.
바로 앞 게시글에 이어서 간단한 프로젝트로 django에서 admin custom을 하는 접근방법에 대해 알아보자. `Action`, `In-line action`, `Excel import & export` 를 다룰 것이다.
HTML을 제외하고, 웹 어플리케이션은 일반적으로 전체 웹 페이지를 렌더링하는 데 필요한 추가 파일 — 예:이미지, JavaScript 또는 CSS — 을 제공해야합니다. Django에서는 이러한 파일을 《정적 파일》 이라고 부릅니다.
Spring 에 비유하면, 만들어진 웹 서비스를 Tomcat 등의 "WAS"로 배포를 한다. Python에서는 이러한 WAS를 제공해주지 않고 run time환경에서 돌아간다. 그렇다면 어떤 방법으로 웹 서버와 Python 애플리케이션을 연결할 수 있을까?
Django 기반으로 restful Interface를 따르는 Backend API를 만드는 프레임워크, RFW를 알아보자. 정확한 비교는 아니지만 spring <-> spring boot의 관계로 보는 사람이 많다.
이전 글에서 말했듯이 serializers(직렬화)가 의미하는 바는 단순하게 쿼리셋, 모델 인스턴스 등의 복잡한 데이터를 JSON, XML 등의 컨텐트 타입으로 쉽게 변환 가능한 python datatype으로 변환이라고 했다.
앞서나온 내용을 바탕으로 model을 하나 만들고, 얼마나 심플하게 CRUD를 만들 수 있는지 한 번 직접해보자. 그리고 testing까지 해보자!
Django의 request에 대해 더 자세하게 해부해 보자. DRF를 사용해도, 결국 (당연하게) core는 django를 사용한다. 오히려 DRF를 먼저 사용하면, Django의 core를 많이 놓치게 된다.
drf에서 DTO 그 이상의 역할을 하는 serializer, Serializers 를 왜써야 할까? 사용 목적과 이유를 확인하고 drf core와 serializer의 핵심 core를 한 번 파헤쳐 보자.
Django, 특히 DRF로 작업하다 보면 여러가지 mixin, DRF에서는 from rest_framework import generics 로 부터 class를 상속 받아서 CBV로 작업을 많이한다.
장고 쿼리 표현식 (Django Query Expressions)은 업데이트, 생성, 필터링, 순서 기준, 주석 또는 집계에서 사용할 수 있는 값 또는 계산을 설명한다. F(), Func(), Q() 대해 먼저 알아보자.
전편, Django Query Expressions (1)을 꼭 먼저 읽어주세요. offical docs 3.2 기준으로, 핵심과 예제 중심으로 정리한 글입니다. Django ORM에 깊이 관여된 로직이라 당연히 DRF에서도 해당되는 내용입니다.
Django에서 DB의 데이터 삽입, 수정 및 삭제를 진행할 때 성공과 실패가 분명하고 상호 독립적이며 일관되게끔 처리하는 기능을 어떻게 활용할 수 있을까, 트랜잭션의 개념부터 제대로 잡고 가자.
django model을 사용하면서 공통된 queryset 호출, 특정 filter 조건에 model 대상 특정 비즈니스 로직의 반복을 경험하게 된다. 코드 재사용성과 유지보수 향상에 많은 도움이 되는 manager & mixin 활용에 대해 알아보자.
분리된 app의 작업 발생을 알려고, 처리할 수 있도록 만들어진 기능, sender, signal, reciver의 형태로 되어 있으며, 특정 이벤트를 singnal이 포함하고 있으며, reciver가 sender로 부터 그 signal을 받는 것이다.
Django의 요청 / 응답 처리에 대한 후크 프레임 워크로써 Django 상의 모든 API 입출력을 전역적으로 변경하기 위한 플러그인 시스템. "Django의 입력 또는 출력을 전역적으로 변경하기 위한 가볍고 낮은 수준의 "플러그인"
API Server <==> Redis(M.Q) <==> Celery stack이해하기. 핵심은 "한정 된 자원"을 잘 활용하기 위해, 여러가지 요청을 "비동기 적으로" 모두 처리하기 위해.
Celery: Distributed processing worker의 task & subtask(signature) 활용과 실습, 그에 따른 celery의 단점과 해결법.
task 자체와 실행에 초점을 살펴본 앞 글에 이어, task의 선&후행 실행(chaining)과 grouping하여 chord와 같이 task를 묶고 `for-loop` 없이 한 꺼번에 비동기 작업을 수행하는 것에 대해 알아보자.
[PyCon korea 발표 "셀러리 핵심과 커스터마이제이션" 정리] celery를 다루면서 1.안정적 완료, 2.효율적 처리, 3.고도화 및 커스터마이제이션에 대한 얘기를 정리하며 부족한 정보는 채우고 핵심에 대한 내용을 업데이트 했다.
celery는 퍼포먼스 체크나 디버깅이 쉽지않다. celery를 전체적으로 최적화 및 depth있는 분석을 위해 기본적인 모니터링 환경을 구성하고, 더 나아가 전체 web stack [Prometheus + Grafana + Loki + Promtail] 구성 해보자.
Redis와 Django는 middle-ware를 포함한 third party를 활용해 서로 활용도가 좋다. 캐싱과 비동기 작업 스케쥴링, 그리고 M.Q 로도 사용할 수 있는 redis의 django에서 사용법을 훑어보자! 우선 "실습 기반으로" 진행할 것이다.
Sentry란 Application 에러 트래킹, 성능 모니터링을 제공해주는 서비스다. django stack에 sentry를 적용하고 어떻게 sentry가 분석하는지 기본 원리와 사용법에 대해서 파악해보자!
django 에서 sqlite 에 대한 JSONField 는 많은 부분이 미흡. 결론만 살펴보자면, JSONField 를 사용하는 경우 Django ORM 에서 contains 라는 look up 을 제공하지 않는다.
DRF의 PageNumber & LimitOffset & Cursor 방식의 Pagination 실전 사용! 성능이 어떻게 다른가!
django를 초기 세팅할때 대부분의 경우 user를 "관성적으로, 해왔던대로," 세팅을 많이 할 것이다. django에서 user의 full-custom을 위해 framework의 core를 제대로 알아야 해서 처음부터 모든 부분을 이해하기 쉽지 않다.
django & drf의 social login -google oauth에 대한 내용이다. dj-rest-auth는 allauth를 base로 하며 RESTFul 하게 바꿔주는 library다. with allauth & dj-rest-auth & simpleJWT
timesacle DB 는 `PostgreSQL` 을 기반의 오픈소스 시계열(Time-series) RDBMS 이다.
드디어 django 에 connection pool 이!! 개인적으로 진짜 업데이트 안할 것 같은 부분이 업데이트 되다니, 역시 시대에 따라 철학도 유기적으로 변화해야 오랜시간 사랑받는 오픈소스가 되는게 아닐까 한다.