장고 10

django aggregate

aggregate는 데이터베이스의 여러 행을 기반으로 계산된 요약값을 반환Django ORM에서는 aggregate 메서드와 함께 Sum, Avg, Max, Min, Count 등의 함수를 함께 사용from django.db.models import Sum, Avg, Max, Min# 예제: 모든 주문의 총 가격 계산Order.objects.aggregate(total_price=Sum('price'))# 예제: 평균 점수 계산Student.objects.aggregate(average_score=Avg('score'))Aggregate와 Annotate의 차이점aggregate: 전체 쿼리셋에 대해 하나의 값을 반환annotate: 각 객체에 대한 값을 계산하여 추가적인 필드로 반환# Aggregate..

장고 2024.12.27

django CustomUserModel

1. 커스텀 유저 모델장고에서는 기본적으로 제공되는 User 모델이 있음하지만 프로젝트마다 사용자 정보 요구 사항이 다르기 때문에 기본 모델을 수정하거나 확장 필요->이 때 사용하는 것이 커스텀 유저 모델임커스텀 유저 모델은 기본 AbstractUser 또는 AbstractBaseUser를 상속받아 새로운 사용자 모델을 정의하여 사용2. 커스텀 유저 모델이 필요한 이유기본 유저 모델이 제공하는 필드만으로는 부족한 경우가 많음ex 전화번호를 추가하거나 이메일을 아이디로 사용하고 싶을 때확장성을 위해 프로젝트 초기 단계에서 커스텀 유저 모델을 설정하는 것이 좋음 3. 커스텀 유저 모델 구현 방법1) AbstractUser 상속기본 제공되는 유저 모델을 확장하는 방법으로 AbstractUser를 상속받음fro..

장고 2024.12.26

Django REST Framework permission class

DRF의 Permission Class는 API 요청에 대해 사용자가 접근 권한이 있는지를 판단1. Permission Class란Permission Class는 요청을 보낸 사용자가 특정 API 엔드포인트에 접근할 권한이 있는지 확인API 요청을 허용하거나 거부할 수 있는 기본 도구이며 DRF는 기본적으로 몇 가지 권한 클래스를 제공한다.이를 커스터마이징하여 다양한 권한 로직을 구현할 수 있음2. DRF의 기본 권한 클래스AllowAny누구나 접근 가능로그인 여부와 상관없이 모든 요청을 허용함from rest_framework.permissions import AllowAnyclass PublicAPIView(APIView): permission_classes = [AllowAny] def ..

장고 2024.12.24

django JWT

Django에서 JWT(JSON Web Token)를 활용하면 API 인증을 간단하고 효과적으로 구현할 수 있음 JWT는 JSON 포맷으로 클라이언트와 서버 간에 정보를 안전하게 전송하는 토큰 기반 인증 방JWT의 구성: Header, Payload, SignatureHeader에는 토큰 타입과 해싱 알고리즘 정보가 포함됨Payload에는 사용자 정보나 기타 데이터를 포함할 수 있음 (중요한 정보는 넣지 않는 것이 좋음)Signature는 Header와 Payload를 비밀키로 해싱하여 생성한 값으로, 토큰의 무결성을 보장함 Django에서 JWT를 사용하는 이유세션을 사용하지 않아도 인증이 가능함토큰만으로 인증 가능하므로 서버의 상태를 유지할 필요가 없음 (Stateless)확장성과 성능 면에서 장점이..

장고 2024.12.23

Django Rest Framework

1. DRFDRF는 Django 기반의 강력한 REST API를 만들 수 있도록 도와주는 프레임워크임빠르고 간단하게 API 개발이 가능하며 인증, 권한, 페이징, 필터링 등 다양한 기능을 지원함 2. DRF를 사용하는 이유기본 Django보다 RESTful API 설계와 구현이 훨씬 쉬움직렬화(Serialization)를 자동화하여 데이터를 JSON 형태로 쉽게 변환 가능함인증 및 권한 관리 기능이 강력하고 확장성이 높음다양한 Response 형식과 커스텀 가능한 뷰 제공 3. 주요 구성 요소Serializer: 데이터 직렬화 및 역직렬화를 담당함ViewSet: CRUD 로직을 간단하게 작성할 수 있도록 함Router: URL 라우팅을 간단하게 처리함Permission: 권한 관리로 API 접근을 제어함..

장고 2024.12.19

RESTful API

1. RESTful APIRESTful API는 웹 애플리케이션 간의 데이터 교환을 위한 표준화된 설계 원칙을 기반으로 한 APIREST는 Representational State Transfer의 약자자원을 URI로 식별하고 HTTP 메서드를 활용해 자원 조작을 가능하게 함2. RESTful API의 특징클라이언트-서버 구조클라이언트와 서버가 독립적으로 동작하며 서로 간의 의존성을 줄임클라이언트는 요청만 하고 서버는 응답만 제공하는 구조로 설계됨무상태성서버는 클라이언트의 상태를 저장하지 않음요청이 독립적으로 처리되며 이전 요청에 의존하지 않음캐시 가능HTTP 프로토콜의 캐시를 활용해 응답 데이터를 캐싱할 수 있음이를 통해 네트워크 트래픽을 줄이고 성능을 높일 수 있음계층화중간 계층을 활용해 보안, 로드..

장고 2024.12.18

Django ManyToManyField

Django에서 ManyToManyField는 두 모델 간의 다대다(Many-to-Many) 관계를 설정할 때 사용ex) 게시글-해시태그하나의 게시글이 여러 해시태그를 가질 수 있고, 하나의 해시태그도 여러 게시글에 연결될수 있음1. ManyToManyField 정의 방법두 모델 사이에 ManyToManyField를 정의하면 Django가 자동으로 중계 테이블을 만들어 관계를 관리함예시: Product와 Hashtag 모델from django.db import modelsfrom django.conf import settingsclass Hashtag(models.Model): name = models.CharField(max_length=50, unique=True) def __str__(s..

장고 2024.12.17

django annotate

Django annotate Django ORM에서 annotate()는 쿼리셋에 새로운 필드를 추가하고 이를 기반으로 정렬하거나 필터링하는 데 사용됨. 특히 Count, Sum, Avg 등 집계 함수와 함께 사용1. annotate 란 annotate()는 각 객체에 새로운 필드 값을 계산해서 추가하는 역할주로 Count, Sum, Avg, Max와 같은 집계 함수와 함께 사용되며 SQL의 GROUP BY 절과 비슷하게 동작함2. annotate 기본 사용법예시로 상품 데이터 모델인 Product가 있고 찜 기능을 구현하기 위해 like_users라는 ManyToManyField가 있음Product 모델from django.db import modelsfrom django.contrib.auth.mod..

장고 2024.12.16

django foreign key

Django의 ForeignKeyDjango에서 ForeignKey는 데이터베이스 모델 간의 관계를 정의할 때 사용하는 필드관계형 데이터베이스에서 흔히 사용되는 "외래 키"와 동일한 개념으로, 한 모델의 특정 필드가 다른 모델의 특정 레코드를 참조하도록 설정함->두 테이블 간의 관계를 효율적으로 표현하고 관리할 수 있음ForeignKey의 주요 특징1. 일대다 관계 정의ForeignKey는 일대다 관계를 나타냄 예를 들어, 블로그 포스트와 댓글 모델 간의 관계 -> 한 개의 블로그 포스트에는 여러 댓글이 달릴 수 있기 때문에 댓글 모델에서 ForeignKey를 사용하여 블로그 모델을 참조함 2. 다른 모델 참조ForeignKey는 다른 모델을 참조하는 필드선언 시 참조할 모델명을 전달해야 하며, 문자열로..

장고 2024.12.13

장고 시작하기

Django 시작하기: 간단한 프로젝트 설정부터 앱 제작까지1. 가상 환경 설정Django 프로젝트를 시작하기 전에 Python 가상 환경을 설정하는 것이 좋음가상 환경 생성python -m venv .venv가상 환경 활성화 (Windows)source .venv/Scripts/activateDjango 설치pip install django 2. Django 프로젝트 생성Django 프로젝트를 생성하려면 django-admin 명령어를 사용함프로젝트 생성 (현재 디렉토리에 config라는 폴더 생성)django-admin startproject config .서버 실행python manage.py runserver 3. 앱 만들기Django에서는 앱 단위로 기능을 구성함. 새로운 앱을 생성하려면 아래 ..

장고 2024.12.12