본문 바로가기

Django8

CORS - 1 면접중에 받았던 질문중에 CORS에 대한 질문이 있었는데, 긴장을 해서였는지 그냥 준비가 부족해서 였는지 답변을 못했었다. 대부분의 웹 프로젝트가 프론트와 백의 서버가 분리되어 서비스 되는 만큼 진짜 기본 중에 기본이라고 할 수 있는 개념인데... 사실 그 면접 마무리되고 나서부터 계속 한번 정리해야지 해야지 생각만하고 있었는데 이번 기회에 정리하면서 확실하게 가지고 가야겠다. CORS란? CORS는 Cross-Origin Resource Sharing의 약자로서 간단하게 번역해보면 "교차 출처 자원 공유" 정도로 번역된다. CORS는 웹에서 다루는 데이터의 크기가 커지고, 더 다양해짐에 따라서 기존의 웹 규칙인 SOP와는 대치되는 구조이다. 도메인을 단위로 하여 최초 자원이 로드된 도메인이 아닌 외부의.. 2022. 2. 18.
Django - Admin(Search, Filtering) 최근 내가 Django에 대해서 어느정도 알고 있는지도 확인하고 부족한 부분, 모르는 부분을 좀 보완하고자 인프런에서 강의를 듣고 있다. 아직 초반부임에도 불구하고 몰랐던 내용들이 줄줄이 나와서 좀 당황스러웠음;;; 지금까지 내가 알고 쓰던 기능들은 API 개발을 하기위한 최소 단위였다고 볼 수 있을 것 같다. 지금까지 내가 Django를 사용하면서 크게 신경쓰지 않았던 부분이 바로 Admin 페이지일 것이다. 전에 회사에 다닐때도 관리페이지를 따로 만들어서 사용했었기 때문에 Admin 페이지에 대해서 알아볼 생각을 못한 것도 있긴한데, 어쨋든 Admin 페이지에 대해서 별 생각을 안했던 것은 사실이다. DB에 저장된 데이터를 빠르게 수정할 필요가 있을 때나, Shell 통해서 데이터 관리하는 게 조금 .. 2022. 2. 4.
Django - Redis 캐싱 위코드 기간중에 진행했던 프로젝트 중에서 데이터 로딩 속도 확보를 위해서 Redis를 통한 캐싱을 적용했던 적이 있다. 상품 데이터 로딩 속도가 너무 느려서 로딩 속도를 빠르게 해 볼 생각만 가지고 캐싱을 적용해봤던 거라서 어떤 상황에서 캐싱을 적용하면 좋을지 정확하게는 모르겠다. 일단은 전에 적용했던 방식을 간단하게 정리해서 혹시라도 나중에 사용할 일이 있으면 참고하려고 한다. 캐싱이란 내가 전부터 알던 캐싱이라는 단어는 CPU의 캐시 메모리를 기반으로 한다. 사용이 잦은 데이터의 경우 매번 기억장치 간 이동으로 인한 시간 손실을 피하기 위해서 CPU 내부의 크기는 작지만 접근 속도가 압도적으로 빠른 캐시 메모리에 저장해 놓고 사용하는 방식 WAS에서의 캐싱 또한 비슷한 개념으로 이해했다. 특히나 데이.. 2021. 9. 27.
Django - 로깅 회사 나오기 직전에 장고 서버에 적용한 로깅에 대해서 정리해보려고 한다. 그 전에는 급한대로 Django의 Debug 모드를 사용해서 예상치 못한 Exception, Code Error 등을 확인했었다. Debug 모드를 사용하면 Gunicorn 작동 로그에 해당 에러와 Traceback가 출력이 되어서 운영 도중 문제가 발생했을 경우에는 Gunicorn 로그를 시간대별로 확인하면서 대응을 해야만했다. 전에 우분투나 임베디드 리눅스 등을 다뤄본 경험으로 인해서 내가 Django 서버를 관리할 때에는 기본적인 리눅스 명령어들을 활용해서 별 문제없이 이슈에 대응할 수 있었는데, 새로 오신분의 경우에는 프로젝트 구조에 대해서 나만큼 잘 알고있지 못하고 리눅스 사용도 어려워하셔서 겸사겸사 Django의 로깅 기.. 2021. 9. 11.
Django TIL - 2. Select Related, Prefetch Related 중요한 개념이고, 위코드 2차 프로젝트를 진행하면서 쿼리 시간 단축을 위한 여러 방법들을 사용하다보니 이 개념에 대한 이해가 너무 부족했다는 점을 알게 되었다. Select Related와 Prefetch Related 두 방법 모두 관계를 통해서 여러개의 테이블에 있는 데이터들을 사용할 수 있도록 하는 방법들이다. 나중에 까먹더라도 이 포스트보면 다시 기억할 수 있도록 작성해봐야겠다. Select Related? SQL 문법 중 Join을 실시하는 Django의 ORM이다. 일반적인 Many to One 또는 One to One 관계의 외래키 컬럼을 사용해서 참조관계에 있는 테이블을 지정한다. 정참조 관계에 있는 테이블에 사용한다. 사용하면 Join을 완료한 데이터를 DB로 부터 가져온다. 하나의 쿼리.. 2020. 9. 17.
위코드 Pre Course - Django 개념과 흐름 Django란? MVC/MVT 패턴의 웹 서비스의 백 레이어를 구성하는 웹 프레임워크 MVC/MVT 패턴? Model - 데이터와 관련된 모든 것 또는 데이터 자체를 다루는 요소 View - 어떻게 사용자에게 데이터를 보여줄지를 다루는 요소 Control/Template - Model과 View를 제어하는 요소 Django의 구조 Model - MVC 패턴의 Model 역할 Django 프로젝트의 models.py 소스의 로직이 역할을 함 View - MVC 패컨의 View 역할 Django 프로젝트의 views.py 소스의 로직이 역할을 함 Template - MVC 패턴의 Controller 역할 이 부분은 프론트엔드의 영역이라고 볼 수 있을 것 같다. Django의 특징? App라는 기능으로 구분할.. 2020. 8. 8.
위코드 사전 스터디 4주차 - 2 git에 대해서는 어느정도 정리를 끝내서 추가적으로 정했던 과제인 Django 프레임워크를 사용한 웹 서버에 웹 페이지를 올려보기로 했다. 웹페이지는 1주차에 만들었던 자기소개 페이지를 재활용하기로 함. django 설치부터 프로젝트 생성 및 앱 생성까지는 아무 문제없이 진행됐음. 생각해보니까, 문제가 생기는게 이상한 단계이긴 함 app등록해주고 urls.py에다가 html 페이지 연결해주고 views.py에 필요한 거 선언해주고 등등 기본적인 예제를 그대로 따라가니까 페이지 자체는 문제없이 연결이 되긴했다. 문제는 css, javascript가 반영이 안되고 페이지에서 사용하는 이미지가 엑박뜸 찾아보니까 해당 리소스들은 static이라는 폴더로 관리는 해주는 것 같다. 그래서 폴더 만들어주고 필요한거 .. 2020. 7. 7.
Django 기본 pip install django #Django 설치 django-admin startproject __NAME__ #지정한 이름으로 Django 프로젝트 생성 django-admin startapp __NAME)) #지정한 이름으로 Django 앱 생성 python manage.py runserver (__PORT__) #Django 서버 기동, 포트 지정 안하면 8000으로 자동 설정 프로젝트 파일 manage.py : 웹 서버 실행과 관리에 관한 기능을 지원 PROJECT_NAME_DIR __init__.py : 해당 디렉토리를 파이썬 모듈로서 작동하도록 urls.py : 루트 url 설정 파일 settings.py : 프로젝트에 관련된 여러 설정을 관리 wsgi.py : Web Server Gat.. 2020. 7. 7.