Django 프로젝트-To Do List(7): Mixin
1. Mixin의 개념
Mixin은 객체 지향 프로그램에서 많이 쓰이는 개념으로 간단하게 말하여 다중상속을 가능하게 하는 클래스라고 할 수 있다. 여타의 언어들과는 다르게 파이썬은 다중 상속이 지원되지만 다중상속이 주는 모호함을 피하기 위해 많이 사용한다. 따라서 Mixin은 상속이라기 보다는 포함, 확장이라는 개념으로 생각할 수 있다.
2. LoginRequiredMixin 구현
LoginRequiredMixin은 사용자의 페이지에 로그인 되지 않은 다른 사용자가 접근하지 못하게 하고 로그인 페이지로 이동하게 하는 기능을 가지고 있는 클래스이다.
우선 LoginRequiredMixin을 임포트해주고 로그인이 되어있지 않을 때 표시하지 않을 뷰에 상속을 해준다. 이때 상속은 LoginRequiredMixin을 가장 앞에 지정한다.
# task/views.py
from django.contrib.auth.mixins import LoginRequiredMixin
class TaskList(LoginRequiredMixin, ListView):
model = Task
context_object_name = 'tasks'
class TaskDetail(LoginRequiredMixin, DetailView):
model = Task
context_object_name = 'task'
template_name = 'task/task.html'
class TaskCreate(LoginRequiredMixin, CreateView):
model = Task
fields = '__all__'
success_url = reverse_lazy('tasks')
class TaskUpdate(LoginRequiredMixin, UpdateView):
model = Task
fields = '__all__'
success_url = reverse_lazy('tasks')
class TaskDelete(LoginRequiredMixin, DeleteView):
model = Task
context_object_name = 'task'
success_url = reverse_lazy('tasks')
그리고 로그인이 되어있지 않은 경우에는 로그인 url로 리다이렉트하기 위해 setting에 LOGIN_URL 변수를 만들어 url을 지정한다. 기본 경로는 accounts/login으로 되어있다.
# todo/settings.py
LOGIN_URL = 'login'
핵심요약
- Mixin의 개념
- LOGIN_URL
Leave a comment