Login-Required Decorators

Protect function views with @login_required.

Syntax@login_required

Restrict a function-based view to authenticated users with the @login_required decorator. Unauthenticated visitors are redirected to the login page. Use @permission_required for finer control.

For class-based views, use LoginRequiredMixin instead.

Example

Example · python
from django.contrib.auth.decorators import login_required, permission_required

@login_required
def dashboard(request):
    return render(request, "dashboard.html")

@permission_required("blog.add_post")
def new_post(request):
    return render(request, "blog/create.html")

When to use it

  • A developer applies @login_required to a profile view so anonymous users are redirected to the login page.
  • A team applies @permission_required('blog.add_post') to restrict post creation to authorized staff members.
  • A developer uses @require_http_methods(['POST']) to ensure an API endpoint only accepts POST requests.

More examples

@login_required on a view

Redirects unauthenticated users to the LOGIN_URL before allowing access to the dashboard.

Example · python
from django.contrib.auth.decorators import login_required
from django.shortcuts import render

@login_required
def dashboard(request):
    return render(request, "dashboard.html")

@permission_required decorator

Requires the blog.add_post permission; raise_exception=True returns 403 instead of redirecting.

Example · python
from django.contrib.auth.decorators import permission_required

@permission_required("blog.add_post", raise_exception=True)
def post_create(request):
    ...

@require_POST on an endpoint

Restricts the view to POST requests only, returning HTTP 405 for any other method automatically.

Example · python
from django.views.decorators.http import require_POST
from django.http import JsonResponse

@require_POST
def submit_vote(request):
    # Only executes on POST; returns 405 Method Not Allowed for GET
    return JsonResponse({"status": "ok"})

Discussion

  • Be the first to comment on this lesson.
Login-Required Decorators — Django | SoundsCode