Python 114

[FastAPI] (8) API Router 사용하기

API Router 사용하기 API Endpoints를 여러 .py 파일에 분리하여 작성하기 위한 APIRouter 라는 모듈이 존재한다. 해당 모듈을 사용하면 큰 갈래의 API들 끼리는 묶어 관리를 편하게 할 수 있다. 📁 Folder Structure ├── router │ ├── router_1.py // health check router │ └── router_2.py // servic1 router └── app.py Router 분기 작성 app.py에 router를 추가하고, prefix, tags 등을 설정한다. 🛠 app.py import uvicorn from fastapi import FastAPI from routers.router_1 import router as health_r..

Python/FastAPI 2022.12.16

[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..

Python/DRF 2022.11.19

[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_..

Python/Django 2022.11.18

[Django] Pagination 방법 비교 (Feat. Django, DRF)

Pagination이란? Pagination 이란 한번에 많은 데이터를 받기 힘든 경우, 특정 구역을 나눠서 받는 방법 Django에서는 Pagination을 구현하기 위한 여러 모듈들이 존재하는데, 향후 Pagaintation 구현시 의사 결정을 빠르게 할 수 있도록, 각 방법을 비교 해보며 특징을 정리 해놓으려고 한다. 👉 Pagination 의 큰 갈래 (방향성) Pagination 방법에는 여러 종류가 있겠지만 크게 3가지로 나뉘는 걸로 보이며, 1), 2) 의 경우 많이 쓰이는 대중적인 방법으로 선호됩니다. 3) 의 경우에도 1) 페이지 번호 기반 : 미리 페이지 크기(page_size)를 정하고, 페이지 번호(page_num)를 요청받아 조회 응답 방법 2) 특정 지점 부터 특정 갯수 기반 :..

Python/Django 2022.11.10

[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)을 정해서 가져..

Python/DRF 2022.11.10

[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)을 정해서 가져..

Python/DRF 2022.11.10

[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)을 정해서 가져..

Python/DRF 2022.11.10

[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..

Python/Django 2022.11.10

[Pytest] 4. Pytest with Django (Feat. pytest-Django)

pytest-django 설치 Django 프레임워크에서 Pytest를 진행 하기 위해선 pytest-django 패키지 설치가 필요하다. $ pip install pytest-django https://pytest-django.readthedocs.io/en/latest/ pytest-django Documentation — pytest-django documentation © Copyright 2022, Andreas Pelme and contributors. Revision 1f3708ab. pytest-django.readthedocs.io django 셋팅 1. Django 프로젝트 생성 2. Django APP 생성 3. Settings.py에 DB 정보 및 APP 등록 (만약에 DOT_ENV..

Python/Advanced 2022.11.06

[Pytest] 3. Pytest 문법 (Feat. fixture, parametize)

Basic pytest 기본 사용법 # test1.py import pytest def func(x): return x + 1 def test_add(): assert func(4) == 4 $ pytest test1.py Fixture Fixture란 Testing 을 하기 위해 공통적으로 필요한 자원을 사전에 준비해놓는 방법 (1) square_10이란 함수를 Fixture로 준비. (테스트 간 매반 호출됨) # 함수를 fixture로 @pytest.fixture def square_10(): return 10 * 10 def test_square(square_10): assert square_10 == 100 # 121 (2) square_10이란 함수를 Fixture로 미리 준비 및 활용 @pyt..

Python/Advanced 2022.11.06