Voici la courte méthode permettant de gérer la page d'erreur CSRF soi-même. Cette méthode vous permet d'afficher la page d'erreur avec votre propre design / template.

Dans le fichier settings.py ajouter :

CSRF_FAILURE_VIEW = "<votre_projet>.csrf.csrf_failure"

Créer à la racine le fichier csrf.py contenant le code suivant :

# -*- coding: utf-8 -*-
from django.views.generic.simple import direct_to_template
def csrf_failure(request, reason=""):
    """
    Default view used when request fails CSRF protection
    """
    response =  direct_to_template(request, 'csrf.html')
    response.status_code = 403
    return response

Enfin n'oubliez pas de créer le template csrf.html dans le dossier templates/

csrf_403.png

PS: On prend soin de renvoyer le code d'erreur HTTP 403, car par défaut c'est le code 200, ce qui peut laisser penser que tout va bien. Voir la liste des codes HTTP disponibles