Django 1.9 або за допомогою django-фігурних дужок
Django 1.9 представив LoginRequiredMixin, який використовується таким чином:
from django.contrib.auth.mixins import LoginRequiredMixin
class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'
Якщо ви використовуєте стару версію django, ви можете використовувати майже такий самий мікс від django-фігурних дужок - версія Django базувалася на версії django-фігурних дужок. django-braces 1.4.x все ще підтримує Django 1.4, тому ви можете використовувати його з досить старими версіями.
Старіші методи
Я знайшов це запитання під час пошуку в Google, як прикрасити подання на основі класу, тому додати відповідь на це:
Це висвітлено в розділі документації, присвяченому оформленню подань на основі класів . Є urls.py
обгортка, або ви можете застосувати декоратор до dispatch()
методу. Приклади з документації:
Оформлення в URL конф
from django.contrib.auth.decorators import login_required, permission_required
from django.views.generic import TemplateView
from .views import VoteView
urlpatterns = patterns('',
(r'^about/', login_required(TemplateView.as_view(template_name="secret.html"))),
(r'^vote/', permission_required('polls.can_vote')(VoteView.as_view())),
)
Оздоблення класу
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.views.generic import TemplateView
class ProtectedView(TemplateView):
template_name = 'secret.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(ProtectedView, self).dispatch(*args, **kwargs)
Детальніше див. У документації, на яку посилається вище.