Django 35

Django + 외부 API

외부 API 사용하기실제 서비스 개발은 단순히 내부 로직만으로 끝나지 않음대부분의 경우 외부 서비스와 연동하는 작업이 필요제휴 업체와 협업할 때, 그들의 API 문서를 받아서 우리가 직접 연동하게 됨 예시: CU Post와 제휴CU Post 개발팀은 API명세서(문서) 제공해당 문서를 해석하여 직접 요청하고 응답을 처리하는 연동 로직 구현→ 업체가 대신 개발해주거나 자동으로 연동되는 것이 아님  자주 사용하는 외부 API소셜 로그인 (구글, 카카오 등)결제 서비스 (PG사 연동)날씨/지도/뉴스 등 외부 데이터 APIChatGPT(OpenAI) API번역, 문자 발송, 이미지 생성 등 OpenAI API와 Django API로 번역 기능 제공 gpt-3.5-turbo 기준 1,000,000 tokens =..

Redis를 Django 캐시 백엔드로 설정하기

Redis(Remote Dictionary Server)외부에 존재하는 key-value 저장소빠른 응답 속도를 바탕으로 캐싱, 세션 관리 등에 활용 In-memory 데이터베이스: 메모리에 데이터를 저장하여 디스크보다 약 1,000배 빠름다양한 데이터 타입 지원복잡한 쿼리 불필요데이터를 잊어버릴 수 있음 → cache 만료시간(TTL) 등으로 관리 가능단일 작업 처리 → 오히려 성능 안정성과 예측 가능성 향상→ 데이터를 빠르게 읽고 쓰는 데 최적화된 도구  Redis의 활용 카운터(Counter)로 사용조회수, 방문자 수 등의 실시간 카운팅에 적합 DB 대신 Redis에 먼저 기록하고, 주기적으로 DB에 반영 자주 변경되는 데이터예: 좋아요, 팔로우실시간 랭킹, 인기 게시물 계산 등에도 유용→ 초당 1..

Django ORM(Object Relational Mapping) 활용

Django에서 ORM(Object Relational Mapping) 데이터베이스 테이블을 파이썬 객체처럼 다룰 수 있게 해주는 기술→ Python 쉘이나 view, script 안에서 실행할 수 있음   사전 준비하기 products 앱 생성, Product 모델 정의python manage.py startapp products# settings.pyINSTALLED_APPS = [ ..., # Local "products", ...]# products/urls.pyfrom django.urls import pathurlpatterns = []# urls.pyfrom django.contrib import adminfrom django.urls import path, includ..

Token Auth with JWT

JWT (JSON Web Token) 인증 방식 토큰 자체에 유저 정보를 담아 별도의 인증 저장소(DB 등) 없이 인증 가능Cookie는 브라우저에 국한되므로 다양한 환경에서 통합 인증이 어려움 → JWT방식의 Token 인증이 사용됨토큰 자체가 하나의 인증 데이터 클라이언트가 ID/PW 전송서버는 검증 후 JWT 발급클라이언트는 JWT를 헤더에 담아 서버에 요청서버는 토큰 유효성 확인 후 요청 처리*Cookie(쿠키)웹 브라우저와 요청과 응답을 주고받을 때 사용하는 데이터 조각쿠키는 도메인에 제한적이며 유효기간이 정해져있음Auth 외에도 다양한 방식으로 활용**Session(세션)stateless한 HTTP 특징을 보완하기 위한 방법세션 DB를 이용해서 유저의 정보를 기억하며 Session ID라고 하..

DRF models with relationship CRUD API 구현

관계(Relationship)가 있는 모델 처리 관계가 있는 모델을 직렬화(Serialization)하고 API를 통해 CRUD 기능 구현Article - Comment 관계  댓글 기능에 필요한 API특정 게시글의 모든 댓글 조회 (GET /articles/comments/)특정 게시글에 댓글 작성 (POST /articles/comments/)특정 댓글 삭제 (DELETE /articles/comments//)특정 댓글 수정 (PATCH /articles/comments//)  모델 정의# articles/models.pyclass Comment(models.Model): article = models.ForeignKey( Article, on_delete=models.CASCADE..

Class Based View (CBV)

Class Based View (CBV) Django와 Django REST Framework(DRF)에서 View를 작성하는 두 가지 방식FBV (Function Based View): 함수로 처리CBV (Class Based View): 클래스로 처리 CBV의 장점 HTTP 메서드별 처리(get(), post(), put(), delete() 등)를 메서드 단위로 분리할 수 있어 가독성과 유지보수성이 높아짐클래스 기반이라 공통 로직을 재사용하기 좋고, 확장성이 뛰어남DRF는 CBV를 더 쉽게 쓰기 위한 기본 클래스를 제공 CBV 클래스 종류 (DRF 기준)APIViewCBV의 기본 클래스 - 직접 메서드 정의 필요GenericAPIViewAPIView 기반 + 쿼리셋, 직렬화 등 기본 기능 내장Mix..

DRF Single Model CRUD API 구현

DRF의 ModelSerializer를 활용한 Django Model JSON 형태 직렬화단일 모델 기반 데이터 조회, 생성, 수정, 삭제하는 기본 API 구성 ModelSerializer는 Django의 ModelForm과 비슷한 역할을 함직렬화와 유효성 검사, 저장까지 전부 처리할 수 있어 매우 강력   urls.py & 기본 구조 설정 프로젝트 URL 연결# api_pjt/urls.pyfrom django.contrib import adminfrom django.urls import path, includeurlpatterns = [ path("admin/", admin.site.urls), path("api/v1/articles/", include("articles.urls")),] 앱..

DRF(Django REST Framework)

DRF(Django Rest Framework) Django에 추가로 설치해서 사용하는 Django의 확장 프레임워크RESTful API를 만드는 도구→ Django + DRF ☞ Web API Application 기존의 Django웹사이트 전체를 빠르게 개발할 수 있도록 도와주는 고수준 프레임워크HTML 페이지를 응답하는 웹 애플리케이션 제작에 초점을 둠MTV 패턴 기반→ 모델 설계, URL 라우팅, 템플릿 렌더링, 세션/보안 관리 등을 포함한 전반적인 웹 개발 DRF 활용RESTful API (JSON 데이터를 응답하는 API서버)제작에 초첨을 둠화면 없이 데이터 처리 로직에 집중API 응답(JSON) 자동 처리인증/권한 관리 지원직렬화(Serializer)시스템 제공CBV 기반 뷰 클래스 제공Sw..

Django - Bootstrap, FontAwesome 활용

Bootstrap반응형 웹 디자인을 쉽게 적용할 수 있도록 돕는 CSS 프레임워크→ 기본적인 스타일이 미리 정의되어 있어 빠르게 웹사이트의 디자인 개선 가능 getbootstrap BootstrapPowerful, extensible, and feature-packed frontend toolkit. Build and customize with Sass, utilize prebuilt grid system and components, and bring projects to life with powerful JavaScript plugins.getbootstrap.com CSS 적용base.html의 태그 안에 아래의 Bootstrap CSS 링크 추가  JS 적용base.html의 태그 마지막 줄에 ..

728x90