Performance: login_required decorator
This affects page load speed by adding a server-side check before rendering protected views, impacting initial response time.
Jump into concepts and practice - no test required
@login_required def dashboard(request): return render(request, 'dashboard.html')
def dashboard(request): if not request.user.is_authenticated: return redirect('/login/') # render dashboard return render(request, 'dashboard.html')
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Manual auth check in view | N/A (server-side) | N/A | N/A | [!] OK |
| login_required decorator | N/A (server-side) | N/A | N/A | [OK] Good |
@login_required decorator in Django?@login_required@login_required decorator to a Django view function named dashboard?@login_required.@login_required above the function definition./profile/?
@login_required
def profile(request):
return HttpResponse('User Profile')@login_required does for anonymous users@login_required:
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
@login_required()
def dashboard(request):
return HttpResponse('Dashboard')@login_required is used without parentheses unless passing arguments.@login_required() instead of @login_required.DashboardView so only logged-in users can access it. Which is the correct way to apply login_required?LoginRequiredMixin to enforce login.LoginRequiredMixin as a parent class instead of login_required correctly uses LoginRequiredMixin as a parent class, which is the standard pattern.