Django viene con una aplicación de redirecciones opcional. Te permite almacenar las redirecciones en una base de datos y se encarga de manejar la redirección por ti. Utiliza el código de estado HTTP 301 Moved Permanently por defecto.
Para instalar la aplicación de redirecciones, sigue estos pasos:
Asegúrate de que el marco de trabajo django.contrib.sites esté instalado: está instalado.
A continuación, te proporciono las traducciones de los textos originales manteniendo todas sus etiquetas intactas.
Agrega 'django.contrib.redirects.middleware.RedirectFallbackMiddleware' a tu configuración MIDDLEWARE.
Ejecuta el comando: djadmin:`manage.py migrate `<migrate>.
La ejecución de manage.py migrate crea una tabla django_redirect en tu base de datos. Esta es una tabla de búsqueda con campos site_id, old_path y new_path.
El middleware RedirectFallbackMiddleware realiza todo el trabajo. Cada vez que cualquier aplicación Django levanta un error 404, este middleware verifica la base de datos de redirecciones para la URL solicitada como último recurso. Específicamente, verifica si existe una redirección con el old_path dado y un ID de sitio que corresponde a la configuración SITE_ID.
Si encuentra una coincidencia, y new_path no está vacío, redirige a new_path utilizando un redireccionamiento HTTP 301 («Muevete permanentemente»). Puedes heredar de RedirectFallbackMiddleware y establecer la propiedad response_redirect_class en django.http.HttpResponseRedirect para utilizar un redireccionamiento HTTP 302 («Muevete temporalmente») en su lugar.
Si encuentra una coincidencia, y new_path está vacío, envía el encabezado HTTP 410 («Gone») y una respuesta vacía (sin contenido).
Si no encuentra una coincidencia, la solicitud continúa siendo procesada como de costumbre.
El middleware solo se activa para errores 404 – no para errores 500 ni respuestas de ningún otro código de estado.
Ten en cuenta que el orden de la configuración MIDDLEWARE importa. En general, puedes colocar RedirectFallbackMiddleware al final de la lista porque es un último recurso.
Para más información sobre middleware, lee los docs de middleware.
Si has activado la interfaz administrativa Django automática, deberías ver una sección «Redirecciones» en la página de inicio del administrador. Edita las redirecciones como editarías cualquier otro objeto en el sistema.
Las redirecciones están representadas por un modelo estándar Django, que vive en django/contrib/redirects/models.py. Puedes acceder a objetos de redirección mediante la API de base de datos de Django. Por ejemplo:
>>> from django.conf import settings
>>> from django.contrib.redirects.models import Redirect
>>> # Add a new redirect.
>>> redirect = Redirect.objects.create(
... site_id=1,
... old_path="/contact-us/",
... new_path="/contact/",
... )
>>> # Change a redirect.
>>> redirect.new_path = "/contact-details/"
>>> redirect.save()
>>> redirect
<Redirect: /contact-us/ ---> /contact-details/>
>>> # Delete a redirect.
>>> Redirect.objects.filter(site_id=1, old_path="/contact-us/").delete()
(1, {'redirects.Redirect': 1})
Puedes cambiar las clases de HttpResponse utilizadas por el middleware creando una subclase de RedirectFallbackMiddleware y sobrescribiendo response_gone_class y/o response_redirect_class.
La clase de HttpResponse utilizada cuando no se encuentra un Redirect para la ruta solicitada o tiene un valor vacío new_path.
Por defecto, utiliza HttpResponseGone.
La clase de HttpResponse que maneja el redireccionamiento.
Por defecto, utiliza HttpResponsePermanentRedirect.
may 31, 2026