개발을 파헤치다/Django(21)
-
Django Admin 기본 설정하기
Django Admin이란?Django는 Python으로 개발된 풀 스택 웹 프레임워크입니다. 수 많은 웹 프레임워크가 존재하지만 그 중 Django를 사용하는 이유 중 하나는 바로 관리자 페이지 즉, Admin 사이트가 함께 제공이 된다는 것입니다. 어떤 서비스를 운영할 때 관리자 페이지는 반드시 필요합니다. 따라서 실제 서비스의 서버단에는 아래와 같은 항목들이 필요한 것입니다. 데이터베이스 설계 및 구성모바일 클라이언트와 통신을 위한 REST API서비스 운영을 위한 관리자 페이지서비스 규모에 따라 다르지만 위의 모든 일을 소수의 서버 개발자로 처리하기는 어려움이 따릅니다.특히, 규모가 크지 않은 서비스 초기의 스타트업에서는 말할 것도 없지요. Django는 위의 세가지를 좀 더 쉽게 할 수 있도록 ..
2019.03.25 -
Django의 Simple Template Response와 Template Response에 대해서
Django는 강력한 웹 프레임워크입니다. 쉽게 사용할 수 있는 Python언어로 구현되어 있으며 10만개가 넘는 다양한 패키지들을 제공하기 때문에 뛰어난 생산성을 자랑합니다. Django에서는 웹 프론트엔드 구현을 더 빠르고 쉽게하기 위해서 다양한 템플릿들을 제공합니다. Django에서 기본적으로 제공하는 HttpResponse는 정적인 파일들(웹 페이지에 동적으로 데이터가 들어가지 않는 파일들)을 렌더링해서 응답으로 보내줍니다. HttpResponse는 객체가 생성됨과 동시에 이미 렌더링된 컨텐츠(HTML 파일) 받습니다. 해당 컨텐츠를 수정할 수 있지만 쉽게 수정할 수 있는 구조는 아닙니다. 이것은 마치 가게에서 이미 포장까지 완료된 상품을 바꿔달라고 하는 것과 같습니다. 만약 상품 포장을 하기 전..
2018.07.24 -
Pycharm pip 10.0.1 버전 AttributeError: module 'pip' has no attribute 'main'에러 해결하기
pip 10.0.1에서 특정 메서드를 지원하지 않게되면서 패키지 설치 시 에러가 발생하게 되었습니다. 내용을 확인해 보면 더이상 pip에서 main이라는 속성을 지원하지 않는다는 내용입니다. pip를 이용하여 개발에 필요한 패키지들을 설치하기 때문에 이 상태로는 프로젝트 진행이 어렵습니다. 따라서 이 경우 10.0.1 버전을 9.0.3 버전대로 다운그레이드 해주어야 하는데 Pycharm에서는 잘 되지 않습니다. 이를 수동으로 해주어야 합니다. 먼저 프로젝트 디렉토리로 이동합니다. 가상환경(venv) → Scripts로 이동하면 해당 프로젝트의 가상환경에서 사용하는 Python파일이 있습니다. 여기에서 PowerShell을 열어줍니다. .\python.exe -m pip install --upgrade p..
2018.06.05 -
Django ORM 성능 튜닝
Django 뿐만 아니라 어떤 ORM을 사용하던지 성능 이슈는 발생할 수 밖에 없습니다. ORM은 데이터베이스의 테이블을 객체지향 프로그래밍에서 흔히 사용하는 객체(Class)처럼 사용할 수 있도록 해주는 기술입니다. 기존 쿼리문을 작성하여 데이터베이스를 조작하는 것을 넘어서서 더 효율적이고 가독성 및 유지 보수에 적합한 코드를 만들기 위해 나오게 되었습니다. 무엇보다도 데이터베이스 종류에 따라 백엔드 로직이 수시로 바뀌는 문제를 해결할 수 있습니다. 즉, MySQL을 사용하다가 검토에 의해 PostgreSQL로 바꾸게 된다고 하더라고 ORM에 정의되어 있는 Model들을 가지고 몇 분이 채 되지 않아 PostgreSQL에 테이블들을 생성할 수 있습니다. 물론, 비즈니스 로직은 거의 수정하지 않은 채 말..
2018.06.04 -
Django REST Framework의 Filter Backends 사용하기
Intro Filtering은 데이터의 목록을 조회하는 GET 요청에 있어 거의 필수적인 요소입니다. 기술적으로 어려운 부분은 없다고 판단되지만 직접 구현한다고 했을 때, 상당히 번거로울 수 있습니다. Django REST Framework(이하 DRF)에서는 ViewSet과 연동하여 쉽고 빠르게 적용할 수 있는 Filter Backends라는 도구를 제공합니다. 이 도구를 활용하면 완성된 ViewSet에 필터링을 적용하는데 채 5분도 걸리지 않습니다. Prerequisite Filtering을 지원해주는 DjangoFilterBackend를 사용하기 위해서는 새로운 패키지를 설치해야 합니다. (venv) $ pip3 install django-filter 이 패키지를 설치하고 DRF에서 Filterin..
2018.05.16 -
Django Admin에서 Form 저장 커스터마이징하기
Django Admin에서 기본적으로 제공하는 Form을 통해 언제든지 Model Instance를 생성할 수 있습니다. TextField같은 경우 기본적으로 Form에서는 Text Area로 등장하는데 좀 더 다양한 입력을 위해서는 WISYWIG 에디터를 적용해야 합니다. Summer Note는 가볍고 Django에 적용하기 쉬운 에디터 중 하나입니다. Summer Note를 적용하고 Form의 save 버튼을 눌렀을 때 있는 그대로 데이터베이스에 저장되지만 때때로 다른 처리가 필요할 수 있습니다. 예를 들면, 서버의 Local에 이미지를 저장하는 것이 아니라 클라우드 서비스에 저장한다던지 같은 예외적인 처리들이 필요할 수 있습니다. 이런 경우에는 Django Admin에서 Form을 전송하여 Mode..
2018.05.15