본문 바로가기

프로그래밍/Python13

Django - Admin(Search, Filtering) 최근 내가 Django에 대해서 어느정도 알고 있는지도 확인하고 부족한 부분, 모르는 부분을 좀 보완하고자 인프런에서 강의를 듣고 있다. 아직 초반부임에도 불구하고 몰랐던 내용들이 줄줄이 나와서 좀 당황스러웠음;;; 지금까지 내가 알고 쓰던 기능들은 API 개발을 하기위한 최소 단위였다고 볼 수 있을 것 같다. 지금까지 내가 Django를 사용하면서 크게 신경쓰지 않았던 부분이 바로 Admin 페이지일 것이다. 전에 회사에 다닐때도 관리페이지를 따로 만들어서 사용했었기 때문에 Admin 페이지에 대해서 알아볼 생각을 못한 것도 있긴한데, 어쨋든 Admin 페이지에 대해서 별 생각을 안했던 것은 사실이다. DB에 저장된 데이터를 빠르게 수정할 필요가 있을 때나, Shell 통해서 데이터 관리하는 게 조금 .. 2022. 2. 4.
DRF - Serializer DRF를 사용해서 사용자를 관리하는 백엔드 앱을 만드는 간단한 프로젝트를 진행중이다. 지금까지는 DRF가 아닌 Native한 Django만을 사용해서 백엔드 앱을 만들어왔었는데, DRF를 얕게나마 경험을 해보니 장단점이 느껴지는 것 같다. DRF도 그렇고, Django도 그렇고 지금 내 이해도가 높은 수준은 아니지만 일단 어느정도 예제를 수행해보고 내 나름의 설계에 따른 앱을 만드는 과정에 있어서 가장 큰 차이점은 Serializer와 viewset, router 정도가 있을 것 같다. 아직 직접적으로 사용해보진 않았지만, Django에서는 관련 데코레이터를 직접 구현해서 사용해야했던 권한 관리나, 페이지네이션 기능도 DRF에 포함되어 있어서 가져다 사용할 수 있는 것 같다. 일단 가장 빨리 접했던 차이.. 2021. 12. 22.
Python - 예외처리 어제 퇴근 후에 간단한 기술 면접이 있었는데 질문중에 예외처리 문법에서 else의 역할이 무엇인지에 대한 질문이 있었다. 항상 except까지만 사용하다보니 정확하게 답변을 못했는데 파이썬의 예외처리 문법 관련해서 다시 한번 살펴볼 계기로 아주 적절한 계기같다. 근데 단순하게 예외처리에서 사용되는 키워드의 역할 정도만 정확하게 파악해보려고 공식 문서 살펴봤는데 당연하겠지만 예외처리를 구성하는 문법이 꽤나 다양해서 전체적으로 정리해보려고 한다. 파이썬의 예외처리 파이썬의 예외처리 문법에서 직접적으로 사용되는 키워드는 try, except, else, finally의 4종류가 사용된다. 각 키워드의 역할을 간단하게 정리하면 다음과 같다. try : 예외 발생을 잡아낼 코드의 부분을 지정하는 키워드이다. tr.. 2021. 11. 18.
Django - Redis 캐싱 위코드 기간중에 진행했던 프로젝트 중에서 데이터 로딩 속도 확보를 위해서 Redis를 통한 캐싱을 적용했던 적이 있다. 상품 데이터 로딩 속도가 너무 느려서 로딩 속도를 빠르게 해 볼 생각만 가지고 캐싱을 적용해봤던 거라서 어떤 상황에서 캐싱을 적용하면 좋을지 정확하게는 모르겠다. 일단은 전에 적용했던 방식을 간단하게 정리해서 혹시라도 나중에 사용할 일이 있으면 참고하려고 한다. 캐싱이란 내가 전부터 알던 캐싱이라는 단어는 CPU의 캐시 메모리를 기반으로 한다. 사용이 잦은 데이터의 경우 매번 기억장치 간 이동으로 인한 시간 손실을 피하기 위해서 CPU 내부의 크기는 작지만 접근 속도가 압도적으로 빠른 캐시 메모리에 저장해 놓고 사용하는 방식 WAS에서의 캐싱 또한 비슷한 개념으로 이해했다. 특히나 데이.. 2021. 9. 27.
Django - 로깅 회사 나오기 직전에 장고 서버에 적용한 로깅에 대해서 정리해보려고 한다. 그 전에는 급한대로 Django의 Debug 모드를 사용해서 예상치 못한 Exception, Code Error 등을 확인했었다. Debug 모드를 사용하면 Gunicorn 작동 로그에 해당 에러와 Traceback가 출력이 되어서 운영 도중 문제가 발생했을 경우에는 Gunicorn 로그를 시간대별로 확인하면서 대응을 해야만했다. 전에 우분투나 임베디드 리눅스 등을 다뤄본 경험으로 인해서 내가 Django 서버를 관리할 때에는 기본적인 리눅스 명령어들을 활용해서 별 문제없이 이슈에 대응할 수 있었는데, 새로 오신분의 경우에는 프로젝트 구조에 대해서 나만큼 잘 알고있지 못하고 리눅스 사용도 어려워하셔서 겸사겸사 Django의 로깅 기.. 2021. 9. 11.
Conda 기본 Conda(콘다) 파이썬 가상환경(env) 설정을 돕는 도구 가상환경이란 프로젝트별로 독립된 공간을 설정해서 사용하는 패키지나 도구들이 다른 프로젝트의 요소와 충돌하지 않게끔 하는 것 Anaconda라는 파이썬 배포판에 포함되어 있지만 따로 설치도 가능하다. Conda 설치 https://docs.conda.io/en/latest/miniconda.html Miniconda — Conda documentation Miniconda Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on.. 2020. 7. 29.
Python - Class 파이썬도 당연하겠지만 Class를 사용할 수 있다. 관련된 내용을 정리해보자. 클래스 정의 예제 class Calculator: def __init__(self, id):#생성자 self.id = id#클래스 attribute(속성) def plus(self, num1, num2):#이하 클래스 method(메소드) return num1 + num2 def minus(self, num1, num2): return num1 - num2 def div(self, num1, num2): if num2 != 0: return num1 / num2 def check(self): return self.id 파이썬에서 클래스를 사용할 때는 주의할 점이 몇개있다. 클래스 이름은 첫문자를 대문자로 할 것 따르지 않았을 .. 2020. 7. 23.
Python - range와 scope range와 scope 사실 서로 별 관련은 없는 개념인데 겸사겸사 한꺼번에 정리한다. range range는 기본 제공되는 함수이다. 기본적으로 지정된 값만큼의 범위를 가진다고 이해하는게 좋다. 총 3개의 인수를 전달할 수 있고, 각각의 경우에 따른 세부 기능이 다르다. 인수 1개 - 0에서부터 인수로 입력한 숫자 - 1만큼의 범위를 가진다. 인수 2개 - 시작할 지점과 마무리 지점을 순서대로 지정한다. 시작 지점은 표시한 숫자부터, 마무리 지점은 인수 - 1 지점까지의 범위를 가진다. 인수 3개 - 인수 2개와 거의 동일하지만 3번째 인수의 값만큼 값을 건너뛰는 범위를 가진다. 사실 인수 2개를 사용하는 방법에도 기본값인 1이 적용된다. for i in range(4): print(i, end=', .. 2020. 7. 22.
Python - Decorator 파이썬에 있는 데코레이터라는 개념에 대해서 간단하게 정리해보자. closure 개념과 관련된 기능으로 어떤 함수가 실행되기 전에 먼저 실행되어야만 하는 조건을 가진 함수가 있다면 데코레이터를 적용하기 위해 만들어진 상황이다. def decorator_function(original_function): def wrapper_function(): print("함수가 호출되기 전") return original_function() return wrapper_function @decorator_function #1 def display_1(): print("display1 실행") @decorator_function #2 def display_2(): print("display2 실행") display_1() .. 2020. 7. 22.