Skip to content
Django

Authentication

Login, logout, and protect views with auth decorators.

#auth#login#decorators

Code

django
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required, permission_required
from django.contrib.auth.mixins import LoginRequiredMixin
from django.shortcuts import redirect
from django.views.generic import View

@login_required(login_url="/login/")
def dashboard(request):
    return render(request, "dashboard.html", {"user": request.user})

@permission_required("articles.add_article", raise_exception=True)
def create_article(request):
    ...

class ProfileView(LoginRequiredMixin, View):
    login_url = "/login/"
    def get(self, request):
        ...

def login_view(request):
    if request.method == "POST":
        user = authenticate(request, username=request.POST["username"],
                            password=request.POST["password"])
        if user:
            login(request, user)
            return redirect("dashboard")
    return render(request, "login.html")