본문 바로가기

728x90

Web Development/Django

(8)
[Django] CSS,JS 파일 캐쉬 해제하는 방법 웹 배포 시마다 CSS, JS 파일이 바로 적용되지 않는다면, 이전 CSS,JS 파일의 캐쉬가 존재하기 때문이다. 이를 해제하기 위해서는 다음과 같이 ?{% now 'U' %} 를 붙여준다. * static을 사용하지 않는 경우에도 동일하게 href나 src 뒤에 붙여준다 ?version=1 과 같이 일일이 버전을 수동적으로 관리하는 방법도 있지만, ?{% now 'U' %} 를 사용할 경우, 파일 로드 파라미터로 매 초마다 Unix Timestamp를 자동적으로 생성한다 따라서, 위와 같이 파일 로드 태그를 붙여주면, 실제 웹 사이트 상에서는 아래와 같이 자체적으로 생성한 파라미터(1249948982)를 사용해 파일을 찾게 된다 Reference django css file cached I'm havi..
[Django] Rest framework 개념 및 사용법(django-rest-framework) RESTful이란? RESTful이란, Representational State Transfer의 줄임말로서, http의 url과 http method(GET, POST, PUT, DELETE)를 사용해서 API 가독성을 높인 구조화된 시스템 아키텍쳐이며, 하나의 URL로 최소 4가지의 HTTP method를 전송할 수 있다는 장점이 있다. 기존에는 웹 페이지를 보여주는 웹서버만 구현하여 웹 서버에서 DB서버의 데이터도 읽어오고, 사용자들이 글을 남기면 DB 서버에 저장까지 하는 기능을 모두 담당했다. 하지만 스마트폰이 출시되고, 어플리케이션의 등장으로 더이상 웹으로만 서비스를 제공하는 것에 한계가 있었다. 스마트폰 어플과 웹에서 동일한 기능을 제공하는데 기존의 웹서버를 계속 사용하면 매번 HTML을 읽..
[Django] JWT 개념 및 사용법 (djangorestframework-simplejwt) 개념 JWT는 JSON Web Token을 줄인 말로 인증 시스템이다. JWT를 사용함으로 서버는 유저의 세션을 유지할 필요가 없기 때문에 서버 자원을 아낄 수 있게 된다. JWT는 access token과 refresh token을 가지고 있다. access token은 잠시동안만 살아있습니다. 기본값은 5분이고 커스터마이징이 가능하다. refresh token은 조금 더 긴 24시간동안 살아있고 역시 커스터마이징이 가능하다. 토큰이 만료가 되면 당연히 다시 로그인을 해야한다. 구성 JWT는 세 부분으로 구성되어 있다 header.payload.signature signature signature에는 header(base64) + payload(base64) + SECRET_KEY로 구성되어 있다. S..
[Web] 토큰(Token) 기반 인증의 개념 및 장점 토큰(Token) 기반 인증은 모던 웹서비스에서 정말 많이 사용되고 있는 방법이며, API 를 사용하는 웹서비스를 개발한다면, 토큰을 사용하여 유저들의 인증작업을 처리하는것이 가장 좋은 방법이다. 과거 서버 기반 인증의 한계 기존의 서버 기반 인증 시스템은 유저들의 정보를 서버측(메모리/디스크/데이터 베이스 시스템)에서 기억하고 있어야 한다. 하지만, 웹/ 모바일 어플리케이션이 부흥하게 되면서 위 방식의 인증 시스템은 아래와 같은 문제점이 발생했다. 세션 유저가 인증을 할 때, 서버는 이 기록을 서버에 저장을 해야하며, 이를 세션 이라고 부른다. 대부분의 경우엔 메모리에 저장하게 되는데, 만약 로그인 중인 유저의 수가 늘어난다면 서버의 램이 과부화되는 현상이 발생한다. 이를 피하기 위해서, 세션을 데이터..
[Django] app폴더 서브폴더 안으로 이동시키기 1. app 폴더 서브폴더 안으로 이동 1) app 초기 생성부터, 서브 폴더 안에서 시작하고 싶은 경우 아래 명령문과 같이 서브 폴더 내 만들고자 하는 앱 이름의 폴더를 생성한뒤, python manage.py startapp 명령어로 앱을 서브 폴더 내 앱 폴더의 위치에서 생성하겠다는 선언을 한다. mkdir / python manage.py startapp / 예시 (myapp이라는 앱을 apps 폴더 내 생성) mkdir apps/myapp python manage.py startapp myapp apps/myapp 2) 이미 app폴더가 있으며, 이동만 시키고 싶은 경우 이 경우에는 app 폴더를 서브 폴더 안으로 이동시킨 후, 다음 단계를 진행한다. 2. 앱 폴더 내 apps.py의 name을..
[Django] Static 파일 폴더 분리하기 django에서는 static 파일을 아래와 같이 STATIC_DIR로 static 폴더에 분리해 사용할 수 있다. STATIC_DIR = os.path.join(BASE_DIR, 'static') 하지만, 이 경우에는 파일 유형 및 앱에 상관없이 한꺼번에 static 폴더에 저장되어야 하기 때문에, 파일 수가 많아질수록 관리하기 어렵다는 단점이 있다. 이때, STATICFILES_DIRS를 사용하면, static 폴더를 분리해 관리할 수 있다. STATICFILES_DIRS = [ os.path.join(STATIC_DIR), os.path.join(STATIC_DIR, 'js'), os.path.join(STATIC_DIR, 'js', 'detailed info'), os.path.join(STATI..
[Django] docker 사용해서 django 앱 배포하기 0. docker 설치 docker을 실행시켜줘야 docker 명령어 사용 가능 1. Dockerfile 생성 pip list 명령어를 통해 설치된 라이브러리 버전 확인 pip list requirements.txt에 필요한 라이브러리 및 버전 작성 (이후, pip install -r requirements.txt를 통해 해당 라이브러리들이 자동적으로 설치되게 함) django==3.2.7 pymysql==1.0.2 pandas==1.2.1 FROM python:3.9.1 WORKDIR /web COPY . . RUN pip install --upgrade pip RUN pip install -r requirements.txt EXPOSE 8000 CMD ["python", "manage.py", "ru..
[Django] Cache 사용방법 Django에서 cache를 사용하는 방법에는 Memcached와 Redis가 있다. Redis 방식 Redis 설정하기 1) django-redis를 설치한 후, pip install django-redis 2) settings.py에 CACHE 부분을 추가해주면 된다. CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://{URL}:6379', }, } from django.core.cache import cache def get_post_count(): cache_key = 'my_blog_post_count' count = cache.get(cache_key, None) if not count..

반응형