[장고 ORM] 역방향 참조 외래 키 찾기
이 포스팅은 8퍼센트의 CTO 이호성 님으로부터 치킨 두 마리를 지원받아 주관적으로 작성되었습니다. 개요 (TL; DR) 장고에서 외래 키 값을 수정할 때, 순방향 참조를 수정하는 경우(수정할 모델이 다른 모델을 가리킬 때)에는 단순히 외래 키 필드에 저장된 값을 수정하면 됩니다. 하지만 반대로, 역방향 참조를 수정하는 경우(다른 모델이 수정할 모델을 가리킬 때)에는 수정할 모델을 가리키는 모든 모델을 수정해야 합니다. 어디서 이 모델을 가리키
BackendDatabaseDjango
for 루프에서 transaction.on_commit을 사용할 때 콜백 함수에 인자를 올바르게 넘기는 방법
transaction 블록 안에서 for 루프와 on_commit을 사용할 때 발생할 수 있는 이슈를 공유합니다. 트랜잭션이 성공적으로 커밋 된 경우에만 특정 동작을 실행해야 할 때가 있습니다. 이 때 장고의 transaction.on_commit 함수를 사용하여 콜백 함수를 등록하면 트랜잭션이 커밋된 후 등록된 순서대로 콜백 함수가 실행됩니다. 문제 상황 예를 들어, 8퍼센트 추첨 이벤트에서 10명의 사용자를 추첨하고 당첨된 사용자에게 안내를
BackendDevOpsDjangoPython
Django ORM cookbook 번역 후기
여정의 시작 8퍼센트에서는 여전히 스터디가 꾸준히 이어지고 있다. 스터디를 마치면 자연스레 다음엔 무엇을 해볼까? 하는 기대감이 생기곤 한다. 이번에는 회사에서 메인으로 사용하고 있는 Django에 대해 조금 더 알아보고, 업무에도 바로 적용해 볼 수 있는 스터디를 하기로 결정했다. 호성님의 제안으로 우리는 Django ORM Cookbook 책을 공부해 보기로 했다. Django ORM Cookbook은 Django의 ORM과 모델의 다양한
BackendData EngineeringDjango
두숟갈 스터디 - 19
무엇을 공부했나요? 마지막 스터디 시간에는 제가 29장 유틸리티들에 대해, 30장 배포:PaaS를 요약하고, 연태님께서 심화를 준비하셨습니다. 29장 유틸리티들에 대해 유틸리티 모듈을 이용하여 앱을 최적화하기 공통으로 쓰이는 함수 혹은 클래스를 utils.py 모듈에 작성하여 캡슐화한다면 재사용과 테스팅이 수월해질 것입니다. django.utils django.utils 패키지는 유용한 헬퍼함수를 내장하고 있습니다. 하지만 대부분 장고 내부적인
BackendCI/CDDjangoTesting
두숟갈 스터디 - 18
무엇을 공부했나요? 이번 시간에는 Two scoops of Django 27장 ‘로깅: 누구를 위한 것인가?’와 28장 ‘시그널: 이용 사례와 시그널을 피할 수 있는 기술들’을 공부했습니다. 몰아주기 가위바위보에서 패배한 남홍님이 요약과 심화 모두 준비하셨습니다. 로그 진단용 로그는 어플리케이션의 동작과 관련된 이벤트를 기록한다. 예를 들어 사용자가 오류 보고서를 남기면, 그 로그를 해당 에러와 관련된 상황을 확인하는데 쓸 수 있다. 감사용 로
BackendDjangoTools
두숟갈 스터디 - 17
무엇을 공부했나요? Two scoops of Django의 26장 장고 보안의 실전 방법론을 함께 읽고 공부했습니다. 26장 요약을 8퍼센트의 CTO인 호성님께서 준비해주셨고, 심화를 문수님께서 진행해주셨습니다. 열심히 설명중이신 호성님 장고 보안의 실전 방법론 장고는 기본으로 제공되는 보안 도구와 잘 정돈된 문서들 덕분에 보안에 대해서는 괜찮은 평판을 갖고 있는 편입니다. 26장에서는 장고 보안에 대한 좋은 시작점들에 대해서 소개하고 있습니다
Data AnalysisDjangoSecurity
두숟갈 스터디 - 16
무엇을 공부했나요? 이번 시간에는 Two scoops of Django 24장 ‘장고성능 향상시키기’ 와 25장 ‘Asynchronous Task Queues’을 공부하였습니다. 24장은 안영님이 요약하였고 25장의 내용은 제가, 심화는 연태님이 준비하셨습니다. 성능향상시키기 성능을 향상시키는 여러가지 방법에 대하여서 배웠습니다. 하나의 소프트웨어 제품에는 그것을 이루는 여러가지 계층이 존재하는데요, 그 각각의 성능을 개선하는 방법을 살펴보았습
BackendDevOpsDjangoPerformance
두숟갈 스터디 - 15
무엇을 공부했나요? 이번 시간에는 Two scoops of Django의 ‘22장 테스트, 정말 거추장스럽고 낭비일까?’ 와 ‘23장 문서화에 집착하자’에 대해서 함께 이야기를 나누었습니다. 22장 요약, 심화를 희진님이 준비해주셨고, 제가 23장을 요약했습니다. 테스트 부끄럽게도 제가 다닌 회사 중에 테스트를 강조하는 곳은 8퍼센트가 처음입니다. 8퍼센트의 CTO인 호성님은 파이콘 2015년 Python 테스트 시작하기 관련 발표도 하신적이
DjangoPythonTesting
두숟갈 스터디 - 13
무엇을 공부했나요? 이번 시간에는 Two scoops of Django 18장 django core 교체하기, 19장 django admin, 20장 django UserModel을 함께 살펴보았습니다. 동현님께서 세 장의 내용을 요약하셨고, 제가 심화(라고 쓰고 조금 더 알아보기 라고 읽습니다.)를 준비했습니다. 남홍님이 들고 오신 닭머리 카메라가 모두의 모습을 담아주었네요 18장 Django core 교체하기 짧은 대답: 할 이유가 없다.
BackendDjangoPython
두숟갈 스터디 - 14
무엇을 공부했나요? 이번 시간에는 Two scoops of Django의 ‘21장 장고의 비법 소스: 서드 파티 패키지들’을 살펴보았다. 현주님께서 내용을 요약하셨고, 문수님이 심화를 준비해 주셨다. PyPI Python Package Index에 대해서 한번더 소개합니다. 예전 회사에서는 다른 개발자들이 사용하는 Python Library를 작성하는 일도 했었기 때문에 Local PyPI 를 구축해 두고 사용했었다. PyPICloud 사용했던
BackendDjangoPythonTools
두숟갈 스터디 - 12
무엇을 공부했나요? Two scoops of Django 17장 REST API 이용하기를 제가 요약 발표를 맡게됐습니다. 남홍님과의 가위바위보 게임에서 패배를 하였지요. 남홍님의 재치있는 줄 글을 몹시 기대하신 분(저 포함)들을 실망시켜 송구합니다. 열심히 가위바위보 실력을 키우도록 하겠습니다! 내용이 요약하기에 모호한 부분이 다소 존재하는 것 같아서 일전에 호성님께서 말씀하신 DRF Authentication에 대한 내용을 정리했습니다. 하
BackendDjango
두숟갈 스터디 - 11
무엇을 공부했나요? Two scoops of Django 16장 REST API 구현하기 내용을 함께 살펴보았습니다. 마침 이번주부터 새로 시작되는 프로젝트에서 API 개발을 하시게된 문수님께서 책 내용을 정리해서 발표해주셨습니다. (요약자료) REST API는 Representational State Transfer API의 약자로 다양한 환경과 용도에 맞는 데이터를 제공하는 디자인을 정의하고 있습니다. 16장에서는 데이터 생산자의 측면에서
BackendDjangoTools
두숟갈 스터디 - X
무엇을 공부했나요? Two scoops of Django 이번주에는 14장 템플릿 태그와 필터, 15장 장고 템플릿과 Jinaj2 를 나눴다. 스터지 진행룰이 변경된데다가 14, 15 장은 심화로 다룰만한 것도 많지 않아서 심화학습 이후에는 호성님으로부터 고대 유물에 대한 이야기를 들었다. 먼저 안영님이 14장의 요약 내용을 공유했다. 템플릿 태그의 성능문제와 피해야 할 안티패턴에 대한 내용은 꼭 기억할 만한 것이었다. 다음은 최근 대식물시대
BackendDjangoPython
두숟갈 스터디 - 9
무엇을 공부했나요? Two scoops of Django 12장 폼 패턴들, 13장 템플릿의 모범적인 이용을 살펴 보았다. 참고로 최근 한글판(1.8 기준)과, 최근 영문판(1.11 기준)이 장의 순서가 다르다. 지난 스터디 부터 스터디룰을 바꿔서 요약을 공유하는 시간을 줄이기로 하였다. (모두들 열심히 공부해 온것을 가정하는 것이다…) 그래서 희진님과 성권님의 요약에 대한 공유가 빠르게 진행 되었다. 처음은 중간에 조인 하신 희진님의 첫번째
BackendDjangoPython
두숟갈 스터디 - 8
무엇을 공부했나요? Two scoops of Django 11장 장고 폼의 기초에 대해 알아보았습니다. 문수님께서 11장의 자료를 요약하였고, 호성님께서 심화자료를 준비하셨습니다. 스터디중 다루었던 이야기들은 아래와 같습니다. 장고 폼은 입력데이터의 유효성을 검사하는데 최상의 도구다. 입력되는 데이터에 대해서 일일이 유효성 검사 코드를 만들지 않고, 장고에서 제공하는 검증된 데이터 테스트 프레임워크를 이용하자. 모델 폼을 적극적으로 이용하자.
BackendDjangoTesting
두숟갈 스터디 - 7
무엇을 공부했나요? Two scoops of Django 10장 클래스 기반 뷰의 모범적인 이용에 대해 알아보았습니다. 제가 10장의 자료를 요약하였고, 동현님께서 심화자료를 준비하셨습니다. 스터디중 다루었던 이야기들은 아래와 같습니다. 10장 클래스 기반 뷰의 모범적인 이용 클래스 기반 뷰 이용의 가이드라인 뷰 코드의 양은 적으면 적을수록 좋다. 뷰 안에서 같은 코드를 반복적으로 이용하지 말자. 뷰는 프레젠테이션 로직에서 관리하도록 하자. 비
BackendDjangoPythonTesting
두숟갈 스터디 - 6
무엇을 공부했나요? 이번 시간에는 지난 시간에 이어 Two Scoops of Django 8~9장 내용을 살펴보았습니다. 8장 함수기반 뷰와 클래스 기반 뷰 9장 함수 기반 뷰의 모범적인 이용 진홍님께서 8장을, 문수(미주)님께서 9장 요약 자료를 준비하였고, 남홍님께서 심화 자료를 준비하여 이번 스터디를 진행하였습니다. 이번 스터디부터 본격적으로 Django에 대해 다룬다는 느낌이 들었고, 어떻게 보면 난이도가 조금 올라간 듯 한 내용들도 보
BackendDjangoPython
두숟갈 스터디 - 5
무엇을 공부했나요? Two scoops of Django 7장은 Django의 쿼리 및 데이터베이스 레이어에 대해 공부하였습니다. 현주님께서 7장의 자료를 요약 및 설명해주셨고, 호성님께서 관련 심화 자료를 준비해 발표해주셨습니다. 스터디중 다루었던 이야기들은 아래와 같습니다. 7장 쿼리와 데이터베이스 레이어 장고에서는 여러 종류의 데이터를 데이터베이스 종류와는 독립적인 형태로 객체화 한다(ORM). 그리고 생성된 객체에는 상호 작용할 수 있는
BackendDatabaseDjango