A aplicação de redirecionamento¶
O Django vem acompanhado de uma aplicação de redirecionamento opcional. Ela permite você armazenar redirecionadores no banco de dados e manipula o redirecionamento pra você.
Instalação¶
Para instalá-lo, siga os seguintes passos:
- Adicione
'django.contrib.redirects'em suasINSTALLED_APPS. - Adicione
'django.contrib.redirects.middleware.RedirectFallbackMiddleware'nas suasMIDDLEWARE_CLASSES. - Execute o commando
manage.py syncdb.
Como ele funciona¶
O manage.py syncdb cria uma tabela django_redirect no seu banco de
dados. Essa é uma tabela de aparência simples com os campos site_id,
old_path e new_path.
O RedirectFallbackMiddleware faz todo trabalho. Toda vez que uma aplicação
Django gera um erro 404, esse middleware checa o banco de dados do
redirecionador para a URL acessada como um último recurso. Especialmente, ele
procura por um redirecionador que tenha um old_path com um ID do site que
corresponde ao SITE_ID no arquivo settings.py.
- Se ele encontra uma correspondência, e
new_pathnão está vazio, ele redireciona para onew_path. - Se ele encontra uma correspondência, e
new_pathestá vazio, ele envia um cabeçalho HTTP 410 (“Gone”) e uma resposta vazia (content-less). - Se ele não encontra uma correspondência, a requisição continua sendo processada normalmente.
O middleware somente opera sobre 404s – não para 500s ou respostas de qualquer outro código de status.
Note que a ordem do MIDDLEWARE_CLASSES importa. Geralmente, você pode
colocar o RedirectFallbackMiddleware no final da lista, porque ele é um
último recurso.
Para saber mais sobre o middleware, leia a documentação do middleware.
Como adicionar, mudar e deletar redirecionadores¶
Via interface de administração¶
Se você tem ativada a interface de administração automática do Django, você pode ver uma seção “Redirects” na página principal do admin. Edite os redirecionadores como você edita qualquer outro objeto do sistema.
Via API do Python¶
-
class
models.Redirect¶ Os redirecionadores são representados por um modelo Django padrão, que se encontram em django/contrib/redirects/models.py. Você pode acessar os objetos de redirecionamento utilizando a API de banco de dados do Django.