First written: 22-11-21
Uploaded: 22-11-28
Decorators도 야심차게 정리하려고 했는데, 자주 쓰이는 것은 많지 않고, 차라리 custom decorator를 쓰는 경우들이 더 많은 것 같았다.
여기서는 자주 쓰이는 몇 가지 decorator들만 살펴보고 마치자.
그 전에 잠시 decorator에 대해 잠깐만 언급하고 넘어가자.
쉬운 예시로 시작해보자.
def example_deco(func):
def decorator():
print('decorator begins.')
func()
print('decorator ends.')
return decorator
@example_deco
def another_func():
print('another function does somegthing!')
another_func()
# decorator begins.
# another function does somegthing!
# decorator ends.
함수를 보기만 하더라도 이해가 될 것이다. 좀 어렵게 이야기하자면, Callable object를 받아서 callable object를 리턴하는 것이 decorator다.
이젠 진짜로 장고에서 자주 볼 수 있는 '몇' 가지 decorator들을 살펴보자.
from django.contrib.auth.decorators import login_required
로 가져온다.
로그인이 되었을 때에만 함수를 실행할 수 있게 해준다.
from django.contrib.auth.decorators import permission_required
로 가져온다.
@permission_required('is_staff')
와 같은 형태로 쓰이며, 특정 권한이 있을 때에만 함수가 실행되도록 한다.
from django.views.decorators.http import require_POST
로 가져온다.
POST 방식의 접근만을 허용한다.
from django.views.decorators.http import require_http_methods
로 가져온다.
@require_http_methods(["GET", "POST"])
라고 하면 GET과 POST 방식의 접근만을 허용하는 것이다.
참고 사이트 :
Django document: View decorators