잠깐 방치해 두었던 장고로 제작된 서비스의 테스트를 개선해야 할 필요성을 느꼈습니다. 개선이 필요한 사항은 1. ci. 커밋 시 자동으로 테스트를 진행이 필요 2. 테스트 시 api를 이용한 특정 작업이 자동으로 실행되는데, 이를 막기 3. 이미지 업로드 시 사용하는 S3을 실제 production bucket에 올라가게 해 두었는데, 이를 막기 커밋 시 자동 테스팅 우선 기존에 release 브랜치에 push시, Github Action을 이용하여 자동으로 실제 배포 서버의 워커를 실행시켜 자동으로 배포되도록 설정해 두었습니다. 이를 활용하여 Github Action을 다시 활용해 자동 테스트를 진행하도록 만들었습니다. name: Test app concurrency: group: production ..
환경 설정 개발환경(MacOS) 맥을 기준으로 사전 환경 설정을 설명합니다. 1. brew를 이용하여 redis를 설치해 줍니다. brew install redis 2. redis를 작동시킵니다. redis-server redis-cli 간단 사용법 redis 서버에 접근 가능한 redis-cli에 대한 간단한 사용법입니다. 1. redis-cli 실행 redis-cli 2. db 선택 select 1 redis는 여러 개의 데이터베이스를 둘 수 있고, 저희는 1번으로 settings에 설정해 두었으므로 1번에 접근합니다. 3. keys 보기 keys * 현재 생성된 key를 확인합니다. 배포 환경(docker-compose) docker-compose를 사용할 때 배포 환경 설정입니다. version:..
장고 모델의 필드에서는 null과 blank 옵션이 존재합니다. null은 데이터베이스에서 필드가 NULL값을 가질 수 있는지, blank는 폼에서 입력하지 않아도 가능한지를 지정하는 옵션입니다. 이들의 기본값을 따로 설정을 하지 않는다면 False로 지정됩니다. 어느 정도로는 바로 이해가 되나, 문자열필드나 관계형 필드를 마주할 때 헷갈리곤 합니다. 그러기에 명확하게 각 필드별 blank, null의 기능에 대해 정리해 보도록 하겠습니다. 일반 필드 문자열 필드도 아니고, 관계형 필드도 아닌 일반적인 IntegerField, DateField와 같은 필드들은 크게 헷갈릴 것이 없습니다. null=True라면 값을 지정해주지 않았을 때 NULL로 DB에 저장되고, blank=True로 하면 폼에서 값을 ..
템플릿(Template) 템플릿이란, 장고 뷰에서 웹사이트를 반환할 때, 웹사이트 정보를 하드코딩으로 생성하지 않고, 다르게 관리할 수 있게 해주는 장고의 기능이다. 사이트 생성을 도와주는 것이기에, 장고를 DRF 등의 프레임워크를 통해 REST API를 사용하는 API 서버용으로 사용한다면 이용할 일이 없는 기능이다. 이때 템플릿은 .html의 파일로 생성을 하며, 내부의 파일은 완전한 html은 아니고, 장고의 템플릿 태그(template tag)를 문법이 추가된 형태이다. 템플릿 파일 작성 위치 그렇다면 템플릿은 어느 위치에 정의할까? 이것에는 크게 2가지 방법이 보통 사용된다. 첫 번째는 각 앱의 templates/ 폴더를 정의해 각 앱별로 모아두거나, 프로젝트의 매인앱에 templates/ 폴더..
dj-rest-auth는 업데이트가 중단된 django-rest-auth를 잇는 프로젝트입니다. 기능으로는 DRF를 베이스로 인증과 관련된 기능들을 간단하게 제공해 주고, django-allauth와 함께 사용하여 소셜 로그인(OAuth) 로그인과 이메일 인증등의 기능도 탑재되어 있습니다. 또한 djangorestframework-simplejwt등과 함께 사용하여 JWT기능도 지원하고 있습니다. dj-rest-auth의 기능 REST API 인증/유저 기능 dj-rest-auth가 기본적으로 제공하는 기능은 DRF에 맞춰 REST API로 인증기능을 지원하는 것입니다. DRF는 기본적으로 따로 편리하게 제공되는 유저 인증기능은 따로 없어서 일일이 제작해야 했습니다. dj-rest-auth는 우선 기본적..
MVC 패턴 장고의 뷰는 MVC패턴의 컨트롤러에 대응하는 부분이다. 뷰(View) 뷰는 클래스로 만드는 class-based-view 나 함수로 만드는 방식이 존재한다. 이번 글에서는 기초적인 함수형 뷰에 대해 소개하겠다. 뷰는 기본적으로 첫 번째 인자에 HttpRequest형의 객체를 일반적으로 request라는 이름으로 전달받는다. 이때 뷰의 이름은 임의로 정할 수 있다(임의로 정한 이름을 URL에 맵핑하기만 해 주면 되기 때문에). # books/urls.py from django.urls import path from books import views urlpatterns = [ path("/", views.index), ] # books/views.py def index(request: Http..
장고에서는 MVC패턴의 컨트롤러(Controller)에 대응하는 뷰(View)가 존재하는데, 이 뷰를 URL 엔드포인트에 연결하는 것이 장고의 URL 부분이다. URL, urls.py 장고에서는 각 뷰에 대응하는 URL을 맵핑한다. 그리고 이 URL을 맵핑하는 파일을 URLConf라고 하는데, 보통 우리는 urls.py에 URLConf를 정의한다. urls.py는 최초 프로젝트 생성 시에 프로젝트 폴더에 하나(해당 가이드에서는 django_basic/urls.py) 생성된다. 그리고 보통 여기서 앱별로 urls.py를 추가적으로 생성하여 사용한다. 우선 django_basic/urls.py 파일을 확인해 보자. """ URL configuration for django_basic project. The ..
이전 글에서는 장고의 기본 구조와 프로젝트, 앱 생성에 대해 알아보았다. 장고 웹 프레임워크는 MVC 패턴을 따르고 있는데, 이에 대해 우선 잠시 살펴보겠다. MVC패턴 그리고 장고의 MTV MVC(Model-View-Controller) 패턴은 애플리케이션을 3가지로 구분한 디자인 패턴이다. 여기서 Model은 데이터를 관리하고, View는 레이아웃과 화면을, Controller는 모델과 뷰를 잇는 역할을 한다. 장고는 MVC패턴의 각각을 MTV(Model-Template-View)라는 이름으로 구현했다. 즉 Model은 Model 그대로, MVC패턴에서 View의 기능은 장고의 Template에 대응하고. 그리고 MVC의 Controller는 장고의 View에 대응한다. MVC 패턴 장고의 MTV M..