View from django.contrib.auth.decorators import login_required from django.utils.decorators import method_decorator from django.contrib.auth.mixins import LoginRequiredMixin # protegendo da maneira *2 # @method_decorator(login_required(login_url='/login/'), name='dispatch') class TesteView(LoginRequiredMixin, TemplateView): # protegendo da maneira *3 (LoginRequiredMixin) template_name = 'my_app/home.html' def get(self, request, *args, **kwargs): return self.render_to_response({}) # protegendo da maneira *1 # @method_decorator(login_required(login_url='/login/')) # def dispatch(self, request, *args, **kwargs): # return super().dispatch(request, *args, **kwargs) Define nos settings a URL de login padrão (LOGIN_URL) from django.urls import reverse_lazy # ... ## necessário ter nomeado a rota de my_app para 'login' LOGIN_URL = reverse_lazy('my_app:login')