| 1 |
========================= |
|---|
| 2 |
Le module de redirections |
|---|
| 3 |
========================= |
|---|
| 4 |
|
|---|
| 5 |
Django fourni un module facultatif de gestion des redirections. Il vous permet |
|---|
| 6 |
de stocker des redirections simples en base de données et de les déclancher |
|---|
| 7 |
à votre place. |
|---|
| 8 |
|
|---|
| 9 |
Installation |
|---|
| 10 |
============ |
|---|
| 11 |
|
|---|
| 12 |
Pour installer le module de gestion des redirections, suivez ces étapes : |
|---|
| 13 |
|
|---|
| 14 |
1. Ajoutez ``'django.contrib.redirects'`` au paramètre INSTALLED_APPS_ |
|---|
| 15 |
2. Ajoutez ``'django.contrib.redirects.middleware.RedirectFallbackMiddleware'`` |
|---|
| 16 |
au paramètre MIDDLEWARE_CLASSES_ |
|---|
| 17 |
3. Executez la commande ``manage.py syncdb`` |
|---|
| 18 |
|
|---|
| 19 |
.. _INSTALLED_APPS: ../settings/#installed-apps |
|---|
| 20 |
.. _MIDDLEWARE_CLASSES: ../settings/#middleware-classes |
|---|
| 21 |
|
|---|
| 22 |
Comment ça marche |
|---|
| 23 |
================= |
|---|
| 24 |
|
|---|
| 25 |
``manage.py syncdb`` crée une table ``django_redirect`` dans votre base de données. C'est une |
|---|
| 26 |
simple table de consultation avec les champs (colonnes) ``site_id``, ``old_path`` et |
|---|
| 27 |
``new_path``. |
|---|
| 28 |
|
|---|
| 29 |
Le ``RedirectFallbackMiddleware``fait tout le travail. Chaque fois qu'une application |
|---|
| 30 |
Django rencontre une erreur 404, ce module interroge la table des redirections pour |
|---|
| 31 |
l'URL demandée. En fait il recherche l'entrée ``site_id``, ``old_path`` avec |
|---|
| 32 |
``site_id`` pour valeur le paramètre SITE_ID_ et ``old_path`` pour valeur |
|---|
| 33 |
l'URL demandée. |
|---|
| 34 |
|
|---|
| 35 |
* S'il trouve une correspondance, et que la valeur de ``new_path`` n'est pas vide, |
|---|
| 36 |
il redirige vers ``new_path`` |
|---|
| 37 |
* S'il trouve une correspondance, et que ``new_path`` est vide, il envoie un 410 ("Terminé") |
|---|
| 38 |
et transmet un entête HTTP et une réponse vide (page sans contenu). |
|---|
| 39 |
* S'il il ne trouve pas de correspondance, la requête suit le processus habituel. |
|---|
| 40 |
|
|---|
| 41 |
Ce module n'est déclenché que sur les erreurs 404 -- non pas sur les erreurs 500 ou autres |
|---|
| 42 |
codes d'état. |
|---|
| 43 |
|
|---|
| 44 |
Remarquez que l'ordre des ``MIDDLEWARE_CLASSES`` est important. Habituellment on met le |
|---|
| 45 |
``RedirectFallbackMiddleware`` en fin de liste, c'est le dernier recours. |
|---|
| 46 |
|
|---|
| 47 |
Pour en savoir plus sur les modules, lisez la doc `middleware docs`_. |
|---|
| 48 |
|
|---|
| 49 |
.. _SITE_ID: ../settings/#site-id |
|---|
| 50 |
.. _middleware docs: ../middleware/ |
|---|
| 51 |
|
|---|
| 52 |
Comment ajouter, modifier ou supprimer des redirections |
|---|
| 53 |
======================================================= |
|---|
| 54 |
|
|---|
| 55 |
Avec l'interface d'administration |
|---|
| 56 |
--------------------------------- |
|---|
| 57 |
|
|---|
| 58 |
Si vous avez activé l'inteface d'admin automatique de Django, vous devriez voir |
|---|
| 59 |
une section "Redirects" sur la premiere page d'admin. Editez les redirections comme |
|---|
| 60 |
vous editeriez les autres objets du système. |
|---|
| 61 |
|
|---|
| 62 |
Avec API Python |
|---|
| 63 |
--------------- |
|---|
| 64 |
|
|---|
| 65 |
Les redirections sont représentés par un `Django model`_ standard, qui se trouve dans |
|---|
| 66 |
`django/contrib/redirects/models.py`_. Vous pouvez accèder aux objets redirections au |
|---|
| 67 |
travers de la `Django database API`_. |
|---|
| 68 |
|
|---|
| 69 |
.. _Django model: ../model-api/ |
|---|
| 70 |
.. _django/contrib/redirects/models.py: http://code.djangoproject.com/browser/django/trunk/django/contrib/redirects/models.py |
|---|
| 71 |
.. _Django database API: ../db-api/ |
|---|
| 72 |
|
|---|