본문 바로가기

IT/Django18

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.
Django, MVT 패턴외에 다른 패턴이 사용 가능할까? 당연히 가능하다. 아래에는 어떤 서비스에 어떤 패턴을 적용시키면 좋은지 간략하게 설명해 놓았다. 0. MVT 패턴 1) MVT 패턴이란? MVT 패턴이란 Model-View-Templete이다. Model: 데이터와 비지니스 로직을 처리, 데이터베이스의 구조(스키마)를 정의하며, 데이터를 저장하고 검색하는 방법을 관리 View: 사용자에게 보여지는 데이터를 처리. 뷰는 모델로부터 데이터를 받아와 사용자에게 보여줄 최종 출력을 생성 Templete: 사용자 인터페이스. HTML로 구성되어 있으며, 부로부터 전달받은 컨텍스트(context) 데이터를 활용하여 사용자에게 보여지는 페이지를 렌더링 2) MVT 패턴이 적합한 서비스 데이터 중심의 웹 애플리케이션: 모델을 통해 데이터를 관리하고, 템플릿을 통해 사.. 2024. 4. 7.
Django, gunicorn + nginx를 사용하여 안정적으로 배포(Ubuntu) 0. 개요 Django로 웹 애플리케이션을 개발했다면, 이제 프로덕션 환경에서 안정적으로 배포하고 사용자에게 서비스를 제공해야 할 때입니다. 개발 서버인 python manage.py runserver로는 충분하지 않습니다. 이 블로그 게시물에서는 Django 애플리케이션을 Gunicorn과 Nginx를 사용하여 프로덕션 환경으로 안전하게 배포하는 방법을 소개합니다. 거의 필수 겠지만 AWS EC2 등과 같은 클라우드 환경에서 진행하셔야 24시간 구동 가능한 서버를 만들 수 있습니다. 1. Gunicorn Gunicorn(Green Unicorn)은 Python 웹 애플리케이션을 서빙하기 위한 WSGI HTTP 서버 개발 서버보다 안정적이며 병렬 처리를 지원하여 높은 트래픽을 처리 2. Nginx Ngi.. 2024. 4. 7.