320x100
#1 개요
어떤 함수를 감싸주는 함수를 장식자(데코레이터)라고 부른다.
정말 많은 함수를 데코레이터로 이용할 수 있을것이고
어쩌면 모든 내장 함수에 대해서도 데코레이터로 활용할 수 있지 않을까 싶다.
하지만 그 중에서 오늘은 로그인 관련 데코레이터에 대해서 다뤄보려고 한다.
#2 예시코드
# 코드1
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
@login_required
def protected_view1(request):
return render(request, 'myapp/secret.html')
# 코드2
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
def protected_view1(request):
return render(request, 'myapp/secret.html')
protected_view2 = login_required(protected_view1)
코드 1과 코드 2는 같은 기능을 한다.
즉, 최종적으로는 코드1을 쓰든 2를 쓰든, protected_view1이라는 기능을 가지고 있는 함수를 사용하기 위해서
요청을 보내는 클라이언트가 있다면, 먼저 login을 했는지 안했는지를 login_required 기능으로써 필터링을 하고
로그인 여부에 따라서 다른 값을 리턴한다.
#3 종류
django.contrib.auth.decorators import <여기>
<여기>에 해당하는 것은
1. user_passes_test - 지정 함수가 False를 반환 하면 login_url로 redirect
2. login_required - 로그아웃 상황에서 login_url로 redirect
3. permission_required - 지정 퍼미션이 없을 때 login_url로 redirect
django.contrib.admin.views.decorators import <여기>
<여기>에 해당하는 것은
staff_member_required - staff member가 아닐 경우 login_url로 이동
300x250
'개발일지 > Django' 카테고리의 다른 글
Django - TypeError: expected str, bytes or os.PathLike object, not list (0) | 2023.01.16 |
---|---|
Django - URL Reverse와 get_absolute_url()의 관계 (0) | 2023.01.14 |
Django - 다인수 vs 다인수 (many to many, 다대다) 해결방법 (0) | 2023.01.10 |
Django -django-debug-toolbar 설치 및 활용 문제 해결! (0) | 2023.01.09 |
Django - models 명령문 (filter, exclude, order_by, __lte) (0) | 2023.01.09 |