Solución:
Consulte el documento de Django, puede configurar CSRF_FAILURE_VIEW
en tus settings.py
, tal como:
CSRF_FAILURE_VIEW = 'your_app_name.views.csrf_failure'
Además, deberá definir un csrf_failure
función en su vista (necesita tener esta firma: def csrf_failure(request, reason="")
basado en el documento), que es similar a:
def csrf_failure(request, reason=""):
ctx = {'message': 'some custom messages'}
return render_to_response(your_custom_template, ctx)
Y puede escribir su plantilla personalizada como:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
{{ message }}
</body>
</html>
A partir de Django 1.10, simplemente puede agregar y personalizar el 403_csrf.html
plantilla: https://docs.djangoproject.com/en/1.10/ref/settings/#std:setting-CSRF_FAILURE_VIEW
Agregar 403_csrf.html template al directorio de plantillas del proyecto.
Como puede ver en el código fuente django / views / csrf.py: si tiene esta plantilla, se aplicará. No es necesario configurar nada.
Contenido de la plantilla que necesita personalizar para sus necesidades:
<div id="summary">
<h1>{{ title }} <span>(403)</span></h1>
<p>{{ main }}</p>
{% if no_referer %}
<p>{{ no_referer1 }}</p>
<p>{{ no_referer2 }}</p>
<p>{{ no_referer3 }}</p>
{% endif %}
{% if no_cookie %}
<p>{{ no_cookie1 }}</p>
<p>{{ no_cookie2 }}</p>
{% endif %}
</div>