개발_TIL
개발_TIL | 2022-06-07(34)
Hee94
2022. 6. 8. 01:13
▷ Django 에서 사용자 인증 여부를 확인하는 방법
- Decorator 를 이용한 구현방법
함수형뷰를 사용한다면 아래와 같이 간편하게 @login_required를 써주는 것 만으로도 모든 작업이 끝난다.
하지만 클래스형으로 뷰를 구현한다면 이 방법은 사용할 수 없다.
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
- Mixin 을 이용한 구현방법 (아직 시도해보지 못함)
LoginRequiredMixin 클래스를 직접 구현해 클래스형 뷰에서 상속받아 사용할 수 있다.
폼입력과 로그인 통제가 필요한 곳이면 매번 쓰는 기능인데 여간 귀찮고 번거로운게 아니라고 한다.
from django.contrib.auth.decorators import login_required
# 믹스인 구현
class LoginRequiredMixin(object):
@classmethod
def as_view(cls, **initkwargs):
view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
return login_required(view)
# 구현한 믹스인 가져다 쓰기
class PhotoCreateView(LoginRequiredMixin, CreateView):
model = Photo
fields = ['album', 'title', 'image', 'description']
success_url = reverse_lazy('photo:index')
- Django 1.9부터 사용 할수 있는 만들어진 Mixin을 가져다 쓰는 방법
@login_required 데코레이터를 쓰는 것 만큼이나 무척 간편해졌다.
제네릭뷰(Generic View) 때문에 어쩔 수 없이 클래스형 뷰를 사용하는 사람에게 큰 편리함을 준다.
from django.contrib.auth.mixins import LoginRequiredMixin
# 바로 위 코드와 비교해보자. 아주 간단해졌다.
class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'