L’application de redirection

Django est livré avec une application facultative de gestion des redirections. Elle vous permet de stocker des redirections simples dans une base de données et elle gère ensuite les redirections pour vous.

Installation

Pour installer l’application de redirection, procédez comme suit :

  1. Veillez à ce que l’application django.contrib.sites soit installée.

  2. Ajoutez 'django.contrib.redirects' à votre réglage INSTALLED_APPS.

  3. Ajoutez 'django.contrib.redirects.middleware.RedirectFallbackMiddleware' à votre réglage MIDDLEWARE_CLASSES.

  4. Lancez la commande manage.py syncdb.

Fonctionnement

manage.py syncdb crée une table django_redirect dans votre base de données. Il s’agit d’une simple table de consultation avec les champs site_id, old_path et new_path.

L’intergiciel RedirectFallbackMiddleware fait tout le travail. Chaque fois qu’une application Django génère une erreur 404, cet intergiciel vérifie en dernier recours si l’URL demandée se trouve dans la base de données des redirections. Plus précisément, il cherche une redirection dont le champ old_path correspond à l’URL et dont l’identifiant de site correspond au réglage SITE_ID.

  • Si une correspondance est trouvée et que new_path n’est pas vide, il redirige vers new_path.

  • Si une correspondance est trouvée et que new_path est vide, il envoie une erreur 410 (« Gone ») dans l’en-tête HTTP et une réponse vide (sans contenu).

  • Si aucune correspondance n’est trouvée, le traitement de la requête continue normalement.

L’intergiciel ne s’active que pour les erreurs 404 – pas pour les erreurs 500 ni les réponses ayant un autre code de statut.

Notez que l’ordre dans le réglage MIDDLEWARE_CLASSES est important. En général, vous pouvez mettre RedirectFallbackMiddleware à la fin de la liste, parce qu’il doit être appelé en dernier recours.

Pour plus d’informations sur cet intergiciel, lisez la documentation des intergiciels.

Ajout, modification et suppression des redirections

Via l’interface d’administration

Si vous avez activé l’interface automatique d’administration de Django, vous devriez voir une section « Redirections » sur la page d’accueil du site d’administration. Modifiez les redirections comme vous modifiez tout autre objet dans le système.

Via l’API Python

class models.Redirect

Les redirections sont représentées par un modèle Django standard, qui est défini dans django/contrib/redirects/models.py. Vous pouvez accéder aux objets de redirection via l’API de base de données de Django.