Python (with. Code)/Django 36

[Django] Prefetch 에 대한 이해

Prefetch 란perfetch_related 함수는 쿼리에서 Join을 하지 않고, 개별 쿼리를 실행 한 후 django에서 직접 데이터를 조합하는 것 예시) A, B, C 모델이 존재 / A:B 는 1:N / B:C 는 1:N의 관계를 가짐 비교 1 ) A에서 C 까지의 Prefetch1안. Prefetch 병렬로 쓰기a = ( A.objects.filter(id=1).prefetch_related( Prefetch( "b_set", # A에서 B 역참조 ), Prefetch( "b_set__c_set", # A에서 C역참조 ), )).first() 2안. Prefetch 중첩해서 쓰기a = ( ..

[DRF] Serializer 특징, 모듈(메소드, 인자) 비교

Serializer 란? Serializer(직렬화) : Django 객체 (Object, Queryset) => JSON 등의 데이터로 변환 DeSerializer(역직렬화) : JSON 등의 데이터 => Django의 객체(Object, Queryset) 변환 👉 Serializer 예시 GET 요청 : DB => Queryset (Model) => OrderedDict(ReturnDict) => JSON 응답 👉 DeSerializer 예시 POST 요청 : JSON => OrderedDict(ReturnDict) => Queryset (Model) => DB DRF Serializer 특징 1. DRF Serializer는 Django의 Form, ModelForm과 유사하다. 2. 기본형 Ser..

[DRF] 간단한 캐싱 기능 구현 하기 (by. redis, DRF)

1. Docker redis run & django-redis 설치 Memcached 형태의 Memory DB인 Redis를 Docker로 작동시킨다. $ docker run -p 6379:6379 redis Django에서 Redis에 접근하기 위한 추가 library를 설치한다. $ pip install django-redis 2. settings.py 작성 django-admin을 이용한 project는 만들었다고 가정 CACHES = { 'default':{ 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379', } } 3. urls.py 작성 from django.contrib import admin fr..

[Django] 간단한 메일 전송 기능 구현 (by. Gmail )

1. Google 계정 보안 설정하기 (1) 구글 계정 - 보안 접속 (2) 2단계 인증 설정 (3) 앱 비밀번호 생성 구글 뿐만 아니라 네이버로 전송시에도 다음과 같이 앱 비밀번호를 생성하는 절차를 거쳐야 한다. 2. settings.py 메일 전송에는 SMTP Protocol이 활용되고, django에 내장된 mail 기능을 사용 # gmail EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = "smtp.gmail.com" EMAIL_HOST_USER = EMAIL_HOST_PASSWORD ='' # gmail 2단계 보안 인증 - 앱 비밀번호임! EMAIL_PORT = 587 # gmail SMTP 포트 EMAIL_..

[DRF] DRF Pagination (by. CursorPagination)

Django에서 게시판을 만드는 방법은 크게 아래 두가지 방향으로 구현이 가능하다. Django의 Paginator (django.core.paginator import Paginator) DRF(Django Rest Framework)의 Pagination(rest_frameowork.pagination) 두 방식은 각기 장단점이 있으며, 서비스(기능) 중심으로 더 결이 잘 맞는 적절한 방향을 정하는 것이 좋다. 추가적으로 DRF 에는 세부적으로 3가지 방법이 제공되는데 PageNumberPagination : 페이지 크기(PAGE_SIZE)를 정하고, 페이지 번호를 요청하는 조회 방법 LimitOffsetPagination : 특정 지점(offset) 부터 특정 데이터 갯수(limit)을 정해서 가져..

[DRF] DRF Pagination (by. LimitOffsetPagination)

Django에서 게시판을 만드는 방법은 크게 아래 두가지 방향으로 구현이 가능하다. Django의 Paginator (django.core.paginator import Paginator) DRF(Django Rest Framework)의 Pagination(rest_frameowork.pagination) 두 방식은 각기 장단점이 있으며, 서비스(기능) 중심으로 더 결이 잘 맞는 적절한 방향을 정하는 것이 좋다. 추가적으로 DRF 에는 세부적으로 3가지 방법이 제공되는데 PageNumberPagination : 페이지 크기(PAGE_SIZE)를 정하고, 페이지 번호를 요청하는 조회 방법 LimitOffsetPagination : 특정 지점(offset) 부터 특정 데이터 갯수(limit)을 정해서 가져..

[DRF] DRF Pagination (by. PageNumberPagination)

Django에서 게시판을 만드는 방법은 크게 아래 두가지 방향으로 구현이 가능하다. Django의 Paginator (django.core.paginator import Paginator) DRF(Django Rest Framework)의 Pagination(rest_frameowork.pagination) 두 방식은 각기 장단점이 있으며, 서비스(기능) 중심으로 더 결이 잘 맞는 적절한 방향을 정하는 것이 좋다. 추가적으로 DRF 에는 세부적으로 3가지 방법이 제공되는데 PageNumberPagination : 페이지 크기(PAGE_SIZE)를 정하고, 페이지 번호를 요청하는 조회 방법 LimitOffsetPagination : 특정 지점(offset) 부터 특정 데이터 갯수(limit)을 정해서 가져..

[Django] Django Pagination (by. Django Paginator)

Django에서 게시판을 만드는 방법은 크게 아래 두가지 방향으로 구현이 가능하다. Django의 Paginator (django.core.paginator import Paginator) DRF(Django Rest Framework)의 Pagination(rest_frameowork.pagination) 두 방식은 각기 장단점이 있으며, 서비스(기능) 중심으로 더 결이 잘 맞는 적절한 방향을 정하는 것이 좋다. 해당 글은 Django의 Paginaotor를 이용해 Pagination을 구현하는 방법을 설명한다. 1. Project, App 생성 django-admin startproject pagination1 django-admin startapp posts 2. settings.py INSTALL..

[Django] Request 구조 분석 (with. DRF, Query-String vs Path-variables)

DRF의 Requests 객체 https://www.django-rest-framework.org/api-guide/requests/ Requests - Django REST framework www.django-rest-framework.org 메소드 종류 설명 request.method HTTP Request 메소드 종류 GET, POST, PUT, PATCH, DELETE 등 request.content_type body에 들어갈 Media type request.data body에 들어가는 데이터 전체 request.FILES file 형식의 객체 request.FILES.getlist 여러 개의 file 형식 객체들 (list 형태) request.query_params URL Query Par..

[Django] Query Profiling Tool (3) - Silk

Django Silk 란 Django Silk는 Request의 총 걸린 시간 / Query 시간 / Query 갯수 등을 Profiling 해주는 Tool 기본적으로 Request와 Response를 DB에 저장하기 때문에 자체가 서버에 부하를 줄 수 있음 Request 마다 걸린 시간 / Query 수 / Query 문 등을 분석 할 수 있으며, DB Clear도 웹으로 편하게 가능 Django Silk 설치 pip install django-silk https://pypi.org/project/django-silk/ django-silk Silky smooth profiling for the Django Framework pypi.org settings.py app, middleware, 옵션 추가..