-
Django ORM defer 기능
시작하기 전에 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 jujun입니다. django orm 은 디폴트로 해당 모델의 모든 컬럼을 불러옵니다. only 기능을 사용한다면 필요한 항목만 불러올 수 있게 됩니다. 이번 포스트에서는 only()와 반대(?)인 defer()기능은 명시된 컬럼을 빼고 모든 컬럼을 가져옵니다. 이는 불필요한 데이터를 불러오지 않게하여 컴퓨터 자원을 보다 효율적으로 사용할수 있습니다. 하지만 잘못 사용하면 lazy lading 에 의해 불필요한 쿼리를 발생시킵니다. 자세히 알아보겠습니다. . 본론 예제코드 저번 블로그와 같이 아래와 같은 모델이 있습니다. # api.raw.models class...
-
Django ORM only 기능
시작하기 전에 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 jujun입니다. django orm 은 디폴트로 해당 모델의 모든 컬럼을 불러옵니다. 하지만 only 기능을 사용한다면 필요한 항목만 불러올 수 있게 됩니다. 이는 불필요한 데이터를 불러오지 않게하여 컴퓨터 자원을 보다 효율적으로 사용할수 있습니다. 하지만 잘못 사용하면 lazy lading 에 의해 불필요한 쿼리를 발생시킵니다. 자세히 알아보겠습니다. . 본론 예제코드 아래와 같은 모델이 있습니다. # api.raw.models class Party(models.Model): country = models.ForeignKey("raw.Country", verbose_name="국가", on_delete=models.SET_NULL ,null=True) owner = models.ForeignKey("user.User", verbose_name="소유자", on_delete=models.SET_NULL ,null=True)...
-
Resize-Image
안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 김영환 입니다. 웹 개발을 하다보면 다량의 이미지를 업로드해야되는 경우가 생김니다. 서로 다른 이미지 크기와 용량으로 사이트 업로드의 시간을 늦출수있는 경우가 있습니다. 그런 경우를 대비해서 이미지 리사이즈를 시켜준뒤 저장하는 방법에 대해 알아보겠습니다. 기존의 이미지 처리 방식 업로드 시에 이미지를 리사이징하거나 렌더링 해야하기 때문에 연산이 많아진다 (서버 사양이 좋아야한다.) 다양한 해상도의 이미지를 저장하기 때문에 스토리지 비용이 원본 하나 저장할 때 보다 증가한다. 이미지 스토리지 마이그레이션 시간과 비용이 장난이 아니다. 이러한...
-
Python Web Framework 3종 비교
Intro 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 강수빈입니다. 오늘은 파이썬의 대표적인 Web Framework 3가지를 소개하고 비교해보도록 하겠습니다. Django 첫번째로 가장 많이 쓰이고 있는 Django입니다. Django는 20003년에 만들어져, 전 세계에서 가장 많은 인기를 누리고 있는 웹 프레임워크 중 하나로 Instagram, Youtube등에서 활용되고 있습니다. 견고하고 직관적인 특징을 갖고 있으며, 재사용 가능한 코드를 장려함으로써 큰 인기를 얻고 있습니다. 특히 풀스텍 웹 프레임워크로써는 Django가 압도적인 지지를 받고 있습니다. 장점 Django는 보안부터 DRF(Django Rest Framework), ORM, 서드파티와의 연계 등...
-
Django Session 알아보기
시작하기 전에 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 jujun입니다. 오늘은 Django 의 세션에 대해 알아보려합니다. 세션에 대해 막연하게만 알고 있어서 이번 기회에 보다 깊이 이해해 보려고 합니다. . 본론 Session? a session is a temporary and interactive information interchange between two or more communicating devices, or between a computer and user (see login session). An established communication session may involve more than one message in each direction. A session is typically stateful, meaning that...
-
프로젝트를 위한 넓고 얕은 장고 지식
일러두기 이 글은 Django와, 그에 속해 있는 Django REST Framework(이하 DRF)에 관한 전반적인 것을 작성한 글입니다. 또한 Django보다 DRF에 중점을 두어 작성됨을 알려드립니다. 목차 0. Django의 아주 간단한 소개 1. Django의 디자인패턴 2. Django는 어떻게 실행되는가 3. 추가적 내용 4. 맺음말 5. 주석 0. Django의 아주 간단한 소개 우리는 이제 아주 넓고 얕게 Django를 알아볼 것입니다. 하지만 그 전에 Django가 무엇인지에 관해 아는 것이 중요할 것입니다. 이 글은 아주 넓고 얕게 Django를 훑는 것을 목적으로...
-
JWT란 무엇인가
JWT 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 김영환 입니다. JMT졸맛탱이 아니라 JWT😝 웹 개발을 진행하다보면 빠질수 없는 인증 / 인가 .. JWT에 대해서 소개해보도록 하겠습니다. JWT 란 무엇인가 지겨우시죠? 네 저도 지겨워요 Json Web Token 약자로 모바일이나 웹의 사용자 인증을 위해 사용하는 암호화된 토큰을 의미합니다. JWT 정보를 request에 담아 사용자응 정보 열람, 수정 등 개인적인 작업 등을 수행할 수 있게한다. 그럼 JWT는 어떤 정보를 담아서 전달하나요? JWT는 세 파트로 나누어지고, 각 파트는 .(점)으로 구분하여...
-
SerializerMethodField() 사용의 쿼리 최적화
SerializerMethodField() 사용의 쿼리 최적화 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 jujun입니다. SerializerMethodField는 원하는 key value를 만들 수 있게 도와주지만 잘못 사용하면 N+1 문제를 발생시킵니다. . . 본론 예제 모델 Profile 모델과 Essay 모델이있고 Essay는 Profile을 참조하고 있습니다. # profile/models.py class Profile(models.Model): username = models.CharField("제목", max_length=50) # essay/Essay.py class Essay(models.Model): title = models.CharField("제목", max_length=50) profile = models.ForeignKey(Profile, verbose_name='작성자', on_delete=models.CASCADE) . . ###정방향 참조 모든 essay의 내용과 작성자 정보를 담은 json을 반환하고자 합니다. 해당 뷰는 모든...
-
Django 코드 컨벤션
들어가기 전에, 안녕하세요, 똑똑한개발자에서 백엔드개발을 하는 차재훈입니다. 똑똑한개발자에서 사용하는 코드 컨벤션을 소개하려고 합니다. 코드 컨벤션의 경우 PEP8을 참고하여 작성했으나 위반하는 내용이 포함되어 있을 수 있습니다. 똑똑한개발자에서 이렇게 코드를 작성하고 있구나’ 정도로 봐주시면 좋을 것 같습니다. 목차 Django 코드 컨벤션이란 Project Architecture 코드 컨벤션 사용법 Queryset View SerializerMethodField Signal Model Meta Django 코드 컨벤션이란 코드의 가독성을 증진시키고 여러 명이 협업하는 과정에서 일관된 코드 스타일을 유지하는 데 있어서 중요하다. 따라서 코드 컨벤션을 잘 지키며 코드를 작성하는 것은...