Django 1.9 ou utiliser des accolades django
Django 1.9 a introduit un LoginRequiredMixin qui est utilisé ainsi:
from django.contrib.auth.mixins import LoginRequiredMixin
class MyView(LoginRequiredMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'
Si vous utilisez une ancienne version de django, vous pouvez utiliser à peu près le même mixin de django-braces - la version de Django était basée sur la version de django-braces. django-braces 1.4.x supporte toujours Django 1.4 afin que vous puissiez l'utiliser avec des versions assez anciennes.
Méthodes plus anciennes
J'ai trouvé cette question en cherchant sur Google comment décorer les vues basées sur les classes, alors pour ajouter la réponse à cela:
Ceci est couvert dans la section de documentation sur la décoration des vues basées sur les classes . Il y a le urls.py
wrapper, ou vous pouvez appliquer le décorateur à la dispatch()
méthode. Exemples tirés de la documentation:
Décorer dans la conf 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())),
)
Décorer la classe
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)
Voir la documentation liée à ci-dessus pour plus de détails.