본문 바로가기

IT/Python20

Django, n+1 문제해결을 위한 select_related, prefetch_related select_realtedselect_related는 SQL의 JOIN 연산을 사용하여, 관련된 객체를 단일 쿼리로 데이터베이스로부터 미리 로드합니다. 이 메서드는 1:1 또는 1:N 관계에 사용되며, 데이터베이스의 부하를 감소시키는 데 효과적입니다.from django.db import modelsclass Author(models.Model): name = models.ChareFiled(max_length=100)class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(Author, on_delete=models.CASCADE)## 쿼리books = Book.objects... 2024. 11. 7.
Djnago, 테스트 폴더 안 테스트 파일을 인식하지 못할 때 Django에서 test.py를 만들고  python manage.py test 를 입력하면 테스트를 진행할 수 있다. 하지만 패키지 구조를 관리하기 위해 앱별로 test 폴더를 만들어 test를 관리하게 될 경우 테스트가 진행되지 않는 경우가 있다. 첫 번째, test 파일의 이름이 test로 시작 되지 않을 때, 예를 들어 test_view.py 와 같이 test로 시작 할 수 있도록 파일 명을 변경해 주어야 한다. 두 번쩨. test폴더 안에 __init__.py가 없는 경우, 이 경우에는 __init__.py라는 이름을 가진 빈 파일을 생성해 주면 해결이 된다. 2024. 10. 31.
APIClient와 APIRequestFactory의 차이 Django Rest Frameworkd(DRF)에서는 API를 테스트할 때 사용할 수 있는 여러 유틸리티를 제공하는데, APIClient와 APIRequestFactory는 그 중에서도 가장 자주 사용되는 도구입니다. 각각의 사용 목적과 기능적 차이를 아래와 같이 설명하려 합니다.1. APIClientAPIClient 는 DRF의 테스트를 위한 가장 강력한 도구 중 하나로, 완전한 웹 브라우저와 유사한 방식으로 작동합니다. 즉, 클라이언트는 HTTP 요청을 서버에 보내고 응답을 받는 과정을 시뮬레이션할 수 있습니다. APIClient를 사용하면 인증, 쿠키, 세션 등의 상태를 관리하면서 HTTP 메서드(GET, POST,PUT, DELETE 등)를 통한 요청을 손쉽게 만들 수 있습니다.from rest.. 2024. 10. 9.
Django 사용자 모델 커스터마이징하기 Django의 기본 사용자 모델은 많은 프로젝트에 충분하지만, 때로는 추가 정보를 저장하거나 기본 동작을 변경해야 할 필요가 있습니다. 이러한 요구사항을 충족하기 위해 Django는 사용자 모델을 커스터마이징할 수 있는 기능을 제공합니다. 다음은 커스텀 사용자 모델을 구현하는 방법을 단계별로 설명합니다.1. settings.py에서 사용자 모델 설정하기프로젝트의 settings.py 파일에서 AUTH_USER_MODEL 설정을 추가하여 Django에게 기본 사용자 모델 대신 사용할 모델을 알립니다.config/settings.pyAUTH_USER_MODEL = 'user.User'이 설정은 user앱의 User모델을 참조합니다. 이렇게 설정함으로써, Django는 모든 인증 관련 구조에서 이 커스텀 모델.. 2024. 10. 9.
Django, foreignkey error - 무결성에 문제가 없더라도 migrations 폴더와 pycache에 문제가 없는지 살펴보기 1. 데이터베이스 마이그레이션 오류 Django의 ORM(Object-Relational Mapping)을 사용하여 개발하는 과정에서 모델에 변경이 발생하면, 이러한 변경 사항을 데이터베이스 스키마에 반영하기 위해 마이그레이션 파일을 생성하고 적용해야 합니다. 때로는 마이그레이션 파일들 간의 불일치나, 잘못 적용된 마이그레이션으로 인해 ForeignKey와 같은 관계 필드에 대한 무결성 오류가 발생할 수 있습니다. 2. 스키마 불일치 오류 데이터베이스 스키마와 Django 모델 간의 불일치로 인해 발생할 수 있는 오류입니다. 예를 들어, 데이터베이스에는 존재하지 않는 필드를 모델에서 참조하려고 하거나, 필드의 타입이 서로 일치하지 않을 때 발생할 수 있습니다. 3. 개발 환경과 배포 환경 간의 불일치 로.. 2024. 4. 12.
Django, 서드파티 앱에 대해서 서드 파티 앱이란 무엇인가? 장고는 매우 강력한 웹 프레임워크이지만, 모든 기능을 기본적으로 제공하지 않습니다. 이 때 서드파티 앱이 중요한 역할을 합니다. 서드 파티 앱은 장고 커뮤니티에서 개발된 외부 라이브러리나 패키지로, 특정 기능을 추가하거나 기존 기능을 확장합니다. 이러한 앱들은 장고의 기능을 넘어서서 더욱 복잡하고 고도화된 웹 애플리케이션의 구축을 가능하게 합니다. 인기 있는 서드파티앱 1. Django REST framework 웹 API 개발을 위한 강력한 툴킷으로, 데이터 직렬화, 인증, 권한 부여등을 포괄적으로 지원합니다. 2. Celery with Django 배경 작업과 비동기 작업을 관리하는데 유용합니다. 이를 통해 서버의 기능을 향상시키고 사용자 경험을 개선할 수 있습니다. 3... 2024. 4. 8.
Django Rest Framework(DRF)를 이용한 API 뷰 구현 서론 Django Rest Framework (DRF)는 Django에서 RESTful API를 구축하는 데 필수적인 도구입니다. 이번 포스팅에서는 DRF를 사용하여 API 뷰를 구현하는 기본적인 방법을 소개합니다. DRF 의 중요성 DRF는 데이터 직렬화, 요청 처리, 권한 관리 등 API 개발에 필요한 다양한 기능을 제공합니다. API 뷰 구현 APIView 클래스를 상속하여 기본적인 CRUD (Create, Read, Update, Delete) 기능을 구현할 수 있습니다. ListCreateAPIView와 RetrieveUpdateDestroyAPIView는 각각 리스트 생성 및 개별 객체에 대한 조회, 수정, 삭제 기능을 제공합니다. 실제 예제 from rest_framework.generics.. 2024. 4. 8.
Django, 테스트코드 작성법 1. 테스트코드란 무엇인가? 테스트 코드는 소프트웨어의 기능과 동작틀 테스트하는 데 사용되는 코드 소프트웨어의 결함을 찾아내고 수정하는 과정에서 매우 중요 V모델의 따라 테스트 단위테스트, 통합테스트, 시스템 테스트, 인수 테스트가 있다. 단위 테스트(Unit Testing): 소프트웨어의 가장 작은 실행 단위인 '단위'를 검증하는 테스트 통합테스트(Integration Testing): 복수의 단위가 서로 올바르게 작동하는지 확인하는 테스트 시스템 테스트(System Testing): 소프트웨어 시스템이 명세서에 기술된 요구사항을 충족하는지 확인하는 종합적인 테스트 인수 테스트(Acceptance Testing): 실제 사용 환경에서 소프트웨어가 사용자의 요구사항을 만족하는지 확인하는 테스트 테스트 코.. 2024. 4. 7.
Django와 라즈베리파이 이용한 실시간 영상 스트리밍 서버 구축(MQTT 프로토콜) 0. 개요 본 글에서는 DJango 웹 프레임워크와 라즈베리파이를 사용하여 실시간 영상 스트리밍 서버를 구축하는 방법을 소개하겠습니다. Django는 웹 인터페이스와 서버 관리를 담당 라즈베리파이의 PiCamera는 영상 스트리밍 1. 사용된 툴 라즈베리파이, PiCamera, Django, Python31) view.py class CamView(TemplateView): template_name = "cam.html" def get_context_data(self): context = super().get_context_data() context["mode"] = self.request.GET.get("mode", "#") return context def stream(request): mjpegst.. 2024. 4. 7.