Python(19)
-
CGI와 WSGI을 파헤치다
CGI란 무엇인가? CGI(Common Gateway Interface)는 웹서버에서 정적인 컨텐츠가 아닌 동적인 컨텐츠를 사용자에게 제공하기 위한 인터페이스입니다. 보통 웹서버의 역할은 사용자의 요청에 알맞은 페이지 혹은 데이터를 내보내는 것으로 알려져 있습니다. 하지만 그 내용이 계산이 필요하다거나, 데이터베이스에서 가져와야 해서 매번 결과가 다르다면 웹서버 혼자서는 이에 대체할 수 없습니다. 결국 웹서버가 사용자가 만든 프로그램과 통신하여 처리가 완료된 결과값을 받은 뒤 클라이언트에게 응답을 보낼 수 있는 인터페이스가 필요한 것입니다. CGI는 이 문제를 해결하기 위해 고안되었습니다. CGI는 인터페이스이며 특정 플랫폼에 의존하지 않고, 웹 서버로부터 외부 프로그램을 호출하는 방식을 정의해 놓은 것..
2018.06.06 -
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 -
Django Admin에서 Summer Note 에디터 사용하기
Summer Note는 Django에서 사용할 수 있는 굉장히 가볍지만 강력한 WISYWIG 에디터입니다. Summer Note를 사용하기 위해서는 패키지를 설치하고 몇 가지 설정만 해주면 됩니다. PyCharm의 Project Interpreter 세팅에서 django-summernote를 추가합니다. CLI를 통해 설치할 경우, 아래의 명령어를 입력합니다. $ pip3 install django-summernote 이제 settings.py에 Summer Note를 추가합니다. INSTALLED_APPS = [ ... 'django-summernote', ... ] Summer Note에서 제공하는 File Upload를 사용하기 위해서 파일이 저장되는 경로도 설정해주어야 합니다. settings.p..
2018.05.14