Django> = 1.9 lub używając nawiasów klamrowych django
Django 1.9 wprowadził LoginRequiredMixin, który jest używany w ten sposób:
from django.contrib.auth.mixins import LoginRequiredMixin
class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'
Jeśli używasz starszej wersji django, możesz użyć prawie tego samego miksu z nawiasów django - wersja Django została oparta na wersji django-nawiasach klamrowych. django-braces 1.4.x nadal obsługuje Django 1.4, więc możesz go używać z dość starymi wersjami.
Starsze metody
Znalazłem to pytanie podczas wyszukiwania w Google, jak udekorować widoki oparte na klasach, więc dodaję odpowiedź:
Jest to omówione w sekcji dokumentacji dotyczącej dekorowania widoków opartych na klasach . Jest urls.py
opakowanie lub możesz zastosować dekorator do dispatch()
metody. Przykłady z dokumentacji:
Dekorowanie w konf. 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())),
)
Dekorowanie klasy
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)
Więcej informacji można znaleźć w dokumentacji, do której link znajduje się powyżej.