Django 1.9 oder mit Django-Klammern
Django 1.9 hat ein LoginRequiredMixin eingeführt , das folgendermaßen verwendet wird:
from django.contrib.auth.mixins import LoginRequiredMixin
class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'
Wenn Sie eine ältere Version von Django verwenden, können Sie fast das gleiche Mixin von Django-Klammern verwenden - die Django-Version basierte auf der Django-Klammer-Version. django-braces 1.4.x unterstützt weiterhin Django 1.4, sodass Sie es mit ziemlich alten Versionen verwenden können.
Ältere Methoden
Ich habe diese Frage gefunden, als ich gegoogelt habe, wie klassenbasierte Ansichten dekoriert werden sollen, um die Antwort darauf hinzuzufügen:
Dies wird im Dokumentationsabschnitt zum Dekorieren klassenbasierter Ansichten behandelt . Es gibt den urls.pyWrapper, oder Sie können den Dekorator auf die dispatch()Methode anwenden . Beispiele aus der Dokumentation:
Dekorieren in URL conf
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())),
)
Die Klasse dekorieren
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)
Weitere Informationen finden Sie in der oben verlinkten Dokumentation.