Descobri que existe um arquivo em ".../site-packages/django/views/csrf.py" que é responsável pela página de erro 403 no Django padrão.
Dai copiei o arquivo completo para a pasta do meu projeto. (.../meu-projeto/csrf.py)
Depois adicionei:
.../settings.py
...
CSRF_FAILURE_VIEW = 'csrf.csrf_failure'
...
Pronto!
Dentro do arquivo csrf.py há o html usado na mensagem de erro 403 assim você pode alterar esse html como preferir.
Pelos mesmos motivos que fizeram os desenvolvedores deixarem o html no arquivo csrf.py eu prefiro manter e alterar o html dentro do arquivo.
Mas você pode criar um arquivo 403.htlm na pasta de templates.
Logo adicione:
.../csrf.py
...
#from django.template import Context, Template
from django.template import Context, Template, loader
...
def csrf_failure(request, reason=""):
...
try:
t = loader.get_template('403.html')
except:
t = Template(CSRF_FAILRE_TEMPLATE)# Se o template nao for encontrado
...
Nesse exemplo o tratamento da exceção vai abrir arquivo 403.html não existir ocorrerá um erro e abrirá o CSRF_FAILRE_TEMPLATE contido acima no arquivo.
Divirta-se ^-^
fontes:
https://docs.djangoproject.com/en/1.3/ref/settings/#std:setting-CSRF_FAILURE_VIEW
http://mitchfournier.com/2010/07/12/show-a-custom-403-forbidden-error-page-in-django/