segunda-feira, 25 de julho de 2011

Django página de erro 403, customizar template

Hoje precisei alterar e customizar a página de erro 403 (acesso negado) do Django. Como não encontrei um tutorial simples para apenas modicar o template da página resolvi escrever o que fiz.

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/

Nenhum comentário:

Postar um comentário