Django 미들웨어 중간에 건너뛰고 싶다 혹은 일부 함수는 다르게 적용되고 싶다면 어떻게 적용하는지 알아보자. 여기서 정리한 모든 내용은 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) 방식은 데코레이터 함수를 적용해서 구현하는 것이다. 아래와 같이 특정 유저만 들어오도록 하는 데코레이터 함수를 구현해 본다. def admin_only(function): @wraps(function) def wrap(request, *args, **kwargs): is_admin = request.user.is_superuser if is_admin: return function(request, *args, ..
장고가 느리다는 평가가 많은데, 서비스가 커질 수록 성능에 목숨을 많이 거는 것은 맞다. 이 대단한 Django가 그냥 쳐다보고 있지는 않을 것 같다. 여러가지 cache 기법을 사용해서 속도나 성능을 키워보자. 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) 아래 공식 사이트에서는 여러가지 방법이 소개가 되어 있다. https://docs.djangoproject.com/en/3.2/topics/cache/ Django’s cache framework | Django documentation | Django Django The web framework for perfectionists with..
Django를 이용하여 REST API 서비스를 구상한다면 제공되는 플랫폼이 있다. 대표적으로 DRF와 요즘 인기가 좋다는 FastAPI 기술과 유사하게 서비스가 제공되는 Django-ninja 플랫폼이 있다. 간단한 소개 자료만 저장해 두려 한다. - 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) DRF - Django REST Framework 말 그대로 REST 를 아주 쉽게 장고에서 제공하기 위해 만들어진 플랫폼이다. 말대로 쓰기가 쉽고 확장성도 뛰어나다. 이제 알았지만 Flask 기반으로 일단 전체 서비시의 프로토타입핑은 아주 빨리 할 수 있지만 사용자 관리 그룹 관리 인증등등 아주 ..
유용한 장고 라이브러리 소개글, 일단 IP를 이용한 위치정보, 접속 브라우저 정보를 가져오는 라이브러리, 그리고 어뷰징등의 잘못된 접근을 간단하게 막아주는 ratelimit 기능을 소개해 보자. 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) Ratelimit 기능 초당 몇회, 분당 몇회 이상의 요청이 들어오면 자동으로 조정해서 서비스를 안주던, 메인페이지로 redirect 를 하던 처리를 할 수 있도록 간단한 wrapper 로 구현이 가능하다. 일단 쉽다! 이게 장점이지머~~~ 설치는 $ pip install django-ratelimit 간단한 사용법은 ## 라이브러리 선언하고, from r..
유용한 장고 라이브러리 소개글, 일단 IP를 이용한 위치정보, 접속 브라우저 정보를 가져오는 라이브러리, 그리고 어뷰징등의 잘못된 접근을 간단하게 막아주는 ratelimit 기능을 소개해 보자. 현재 듣고 있는 장고 강의에 소스에 포함된 내용을 공부할 겸 추려본다 - Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) Django 위치정보 IP나 도메인 주소 정보로 서비스되고 있는 위치 정보를 가져오는 라이브러리, 나라와 도시에 대한 정보를 별도 데이터베이스로 저장해서 관리해주고 있다. 주기적으로 이 DB를 가져와서 업데이트 하면 꽤 괜찮은 정확한 정보를 사용자들에게 보여 줄 수 있다. 위도 경도 정보도 가져올 수 있다. Django settings.py 에 GEOIP_..
Django 에서 MongoDB를 이용하려고 하니 기존에 ORM 기반으로 만든 코드들이 그대로 동작하지 않는다. 일단 호환성을 위해 Djongo 라는 라이브러리가 제공되고 있긴 하나 전부 지원하는 것이 아니기 때문이다. 제일 문제는 model 선언부에서 만든 테이블이 그대로 호환되지 않는다는 점. 일단 models 는 여기서 받아 쓰는 것으로 model.py 파일을 변경하면 된다. from djongo import models 머 스트링, Int, Boolean 이런 것들은 문제가 아니지만 관계형 DB 에서 자주 쓰이는 primary key, foreign key, onetoone mapping 등 relation 과 관련된 키워드들이 100프로 동일하게 변환해 주지 못하므로 발생하는 것 OneToOne..
장고에서 ORM 을 사용하는 경우 Model 을 만들면 Class 객체 하나를 테이블로 만들어 버리게 된다. 그냥 추상 클래스로 상속해서 쓰게 하려는 경우 낭패가 된다 이때 사용하는 키워드가 Meta 라는 것이 있네. from Django 실전 프로젝트 1 - URL Shortener 서비스 ( 패스트캠퍼스 ) class 내에 "class Meta:" 라는 것을 하나 더 두고 abstract = True 로 속성을 설정하면, 이 class 는 DB 테이블로 변환되지 않고 상속에 쓸 수 있는 class 로 남겨둔다. 즉, TimeStampModel 에 보면 "updated_at" "created_at" 이라는 필드가 다른 테이블에 거의 공통으로 사용되고 있어 이 부분을 한 곳에 정리해 두고 상속해서 쓰도록..