TIL 웹개발 - Django쟝고에서 Decorator 데코레이터 사용하기
Django에서 데코레이터는 웹 애플리케이션의 특정 기능을 쉽게 구현할 수 있도록 도와준다. 주로 인증, 권한 관리, 보안, 캐싱 등의 기능을 위해 사용된다. @login_required : 로그인된 사용자만 접근 가능 @permisison_required : 특정 권한이 있는 사용자만 접근 가능 @crsf_exempt : CSRF 검사를 비활성화 @require_http_mothods : 지정된 HTTP 메소드만 허용 @require_POST: POST 요청만 허용 @cache_page: 지정된 시간동안 캐싱하여 출력 성능 향상 @transaction.atomic: 하나의 트랜잭션으로 모든 DB작업 처리 위 데코레이터들은 쟝고에서 주로 사용되는 것들인데 이제 하나씩 알아보자. @login_required 사용자가 로그인하지 않은 상태에서 이 데코레이터가 사용된 뷰에 접근하면 로그인 페이지로 다이렉트를 하는 기능 제공한다. 이렇게 사용하면 my_view에 접근하기 위해 로그인이 필요하고 로그인하지 않은 경우 로그인 페이지로 이동한다. (물론 로그인 페이지가 있는 경우) 이때 두 가지 방법으로 로그인 페이지를 login_required와 연결할 수 있다. 직접 login_url 설정 @login_reqired 데코레이터 함수를 보면 다음과 같이 작성되어 있다. 여기서 login_url = None으로 되어있는데 이 부분을 로그인 페이지로 설정하면 데코레이터가 정상적으로 작동한다. accounts / login.html 설정 쟝고의 기본 설정에 따라 아래 그림처럼 페이지를 구성하면 @login_required를 사용할 수 있다. 로그인 페이지를 accounts 폴더에 위치시키면 쟝고가 알아서 해당 페이지를 리다이렉트해준다. 로그인 후에는 사용하던 페이지의 url을 next 파라미터에 저장해 다시 리다이렉트 해주니 굉장히 편리한 기능이다.