캐싱이란?캐싱은 서버가 동일한 요청에 대해 매번 데이터를 생성하는 대신, 한번 생성된 데이터를 메모리/디스트에 저장해 두고 이후 요청에 재사용하는 방식으로 성능을 높일 수 있다. 응답 속도 향상, 백 단의 서버 부하 감소등의 장점이 있지만, 데이터 일관성의 문제, 민감한 데이터를 캐시에 저장할 경우 보안상 문제가 생길 수 있다. 데이터 베이스는 디스크에 데이터를 저장/조회, 캐시는 메모리에 데이터를 저장/조회한다. 메모리가 디스크보다 입출력 속도가 빠르지만 용량이 작고, 가격이 비싸다. Django의 기본 캐싱 프레임워크Django의 캐싱 프레임워크는 'memcached', 'redis', 'database caching', 'file-based caching'등 다양한 캐시 백엔드를 지원하지만 그중,..
BackEnd/Django, DRF
페이징은 대용량 데이터를 효율적으로 관리하고 사용자에게 빠르게 제공하기 위해서 필수적인 기능이다. 장고에서는 3가지 페이징 기법을 제공한다. 요청하는 방식으로 나눌 수 있다.PageNumberPagination (오프셋 방식)LimitOffsetPagination (오프셋 방식)CursorPaagination (커서 방식) PageNumberPagination가장 기본적인 페이징 기법으로, 페이징 번호를 기반으로 데이터를 나눈다. 사용자는 쿼리 파라미터를 통해 페이지를 이동할 수 있으며, 페이지 크기를 전역으로 지정하여 모든 API에서 동일한 크기의 페이지를 적용할 수 있다.REST_FRAMEWORK = { "PAGE_SIZE": 10, "DEFAULT_PAGINATION_CLASS": "r..
개발하면서는 DEBUG 값을 ture로 해서, 개발을 하다 오류가 발생하면 바로바로 알고 고칠 수 있었다. 하지만 배포시에는 DEBUG값을 false로 하여 로그가 기록되지도 않고, 화면는 에러 코드만 보여주며 그 마저도 사용자만 볼 수 있다. .env를 통한 ADMIN 설정 로컬 개발 환경으로 이동하여 .env 파일에 아래 내용을 추가해준다.ADMINS='jongseoung BEAK ,name Exampe ' settings.py에서 아래의 내용을 추가해준다. AdminMailHandler를 위한 ADMINS/SERVER_EMAIL 설정 추가 · jong-seoung/course-django-complete-guide-v3@865528fjong-seoung committed Aug 7, 2024gi..
Nested Serializer 란?DRF에서 제공하는 기능으로, 관계형 데이터를 처리할 때 매우 유용하다. 이 기능을 이용하여 데이터의 중첩된 관계를 표현하고 관리할 수 있다. Nested Serializer 사용법코드를 보면 IngredientsSerializer, RecipeProcessSerializer, recipe_comments 세가지 직렬화가 BasicRecipeSerializer에 중첩되어 있는 것을 확인할 수 있다.like_count와 bookmark_count는 LikeBookmark를 상속받아 중첩시킨 부분이여서 설명에서 제외하였다. 주의 깊게 봐야 되는 부분이 create와 update 메서드 부분인데, nested serializer는 읽기 전용 필드 이기 때문에 따로 creat..
프로젝트를 진행하다보면, 특정 모델에 대한 권한을 제한하고 싶을 때가 있다. 이럴때 admin.ModelAdmin 클래스에서 제어할 수 있는 다양한 메서드를 제공한다. Options아래의 내용은 options에 들어 있는 메서드들의 내용이다. has_add_permission사용자가 새 객체를 추라할 수 있는 권한이 있는지 확인한다. 기본적으로 사용자가 해당 모델에 대해 add 권한을 가지고 있는지 검사한다.def has_add_permission(self, request): opts = self.opts codename = get_permission_codename("add", opts) return request.user.has_perm("%s.%s" % (opts.app_label..