Tag: middleware
Manipulando erros Http 403 (permissão negada) no Django
by Felipe 'chronos' Prenholato on 17:35, under Apps e extensões, Django
Olá pessoal
. Recentemente, precisei usar o módulo Auth do Django e suas permissões. É bastante interessante como você pode definir permissões por módulo e usar nas views, templates, etc.
Nosso código de hoje vem da necessidade de trabalhar facilmente com permissões negadas, onde o Django fornece apenas um HttpResponseForbidden, o que não é exatamente interessante de manipular, pois o ideal seria algo como a manipulação de erros 404.
Com essa necessidade desenvolvi um Middleware que intercepta exceções Http403 (vem junto com o pacote), e retorna uma das seguintes opções, na ordem de prioridade:
- Uma view customizada, configurada usando handler403 no seu urls.py
- Renderiza o template 403.html
- Renderiza um template Hardcoded
Para usar o Middleware, siga os procedimentos:
- Baixe o projeto no fim deste post, vamos usa-lo de exemplo, ele se chama http403project.
- Descompacte e copie o arquivo http.py para algum lugar do seu projeto, no http403project ele fica na raiz.
- Adicione o middleware ao settings.py:
MIDDLEWARE_CLASSES = ( # ... 'http403project.http.Http403Middleware', )
- De raise na view, ex:
from http import Http403 def Http403View(request): raise Http403(u"This is custom message for permission denied.")
- Configure sua view customizada ou template se desejar. Seu template deve ter o nome de 403.html, sua view recebe os argumentos request e exception, o argumento exception contem a mensagem enviada pelo usuário
. No projeto exemplo ele está renderizando o template 403.html, mas existe uma view de exemplo bastante simples no arquivo urls.py
Projeto: http403project.tgz
Ok, é isto, super simples, por hoje é só
, divirtam-se!