Code


Version 3 (modified by Wiliam Alves de Souza <wiliamsouza83@…>, 7 years ago) (diff)

--

THIS TRANSLATION IS IN PROGRESS:

This is an in progress translation document, that means there is somebody working on it. For more information on translating documents please look at TranslateDocumentation Wiki. Please do not edit this page.

Redirecionamento de Aplicação

Django vem com uma aplicação para redirecionamento como opção. Ela permite que você armazene endereços(URLs) em uma base de dados e gerencia o redirecionamento para você.

Instalação

Para instalar a aplicação de redirecionamento, siga estes passos:

  1. Adicione 'django.contrib.redirects' em INSTALLED_APPS no seu arquivo settings.py.
  2. Adicione 'django.contrib.redirects.middleware.RedirectFallbackMiddleware' em MIDDLEWARE_CLASSES no seu arquivo settings.py.
  3. Execute o comando manage.py syncdb.

Como funciona

manage.py syncdb cria uma tabela chamada django_redirect no banco de dados. Esta é uma simples tabela de referência contendo os campos site_id, old_path e new_path.

RedirectFallbackMiddleware faz todo o trabalho. Toda vez que uma aplicação Django gerar um erro 404, ele checa a base de dados procurando pela URL requisitada, como ultimo recurso. Especificamente, ele verifica esta URL em old_path com um ID que corresponda com SITE_ID do arquivo settings.py.

  • Caso a URL seja encontrada e new_path não esteja vazio, acontece o redirecionamento para new_path.
  • Caso a URL seja encontrada e new_path esta vazio, este gera um erro 410 ("Gone") não há endereço para redirecionamento.
  • Caso nenhuma URL seja encontrada, a requisição continua a ser processada de forma usual.

Esta aplicação trata somente erros 404 -- não trata erros 500 ou responde há qualquer outro código de erro.

Note que a ordem do MIDDLEWARE_CLASSES importa. Geralmente, você pode colocar RedirectFallbackMiddleware no final da lista, porque ele é o ultimo recurso.

Para mais sobre middleware, leia middleware docs.

Como adicionar, modificar ou deletar redirecionamentos

Através da interface de administração

Se você está com a interface de administração do Django ativa, você deve ver uma seção "Redirects" na página inicial da interface de administração. Edite os redirecionamentos da mesma forma como você edita qualquer outro objeto no sistema.

Através da API Python

Redirecionamentos são representados por um módulo Django padrão, localizado em django/contrib/redirects/models/redirects.py. Você pode acessar esse módulo através da API da base de dados Django.