Si estás en Django 1.4 o 1.5, puedes hacer esto:
from django.core.urlresolvers import reverse_lazy
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url=reverse_lazy('my_named_pattern'), permanent=False)),
...
Si tiene Django 1.6 o superior, puede hacer esto:
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
En Django 1.9, el valor predeterminado de permanentha cambiado de verdadero a falso. Debido a esto, si no especifica el permanentargumento de la palabra clave, puede ver esta advertencia:
RemovedInDjango19Warning: el valor predeterminado de 'RedirectView.permanent' cambiará de True a False en Django 1.9. Establezca un valor explícito para silenciar esta advertencia.
(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),pattern_nameargumento aRedirectViewejecuta inversa para usted en el momento de la llamada utilizando el nombre del patrón dado. Otros parámetros útiles incluyenpermanentyquery_string.Esto funciona para mi.
En el ejemplo anterior
'/'significa que redirigirá a la página de índice, donde también puede agregar cualquier patrón de URL.fuente
RedirectViewtienepermanent=Truepor defecto en versiones anteriores de Django, ypermanent=Falsepor defecto en versiones de Django> = 1.9.para django v2 +
fuente
permanent=Falsees el valor predeterminado. Para obtener más detalles, lea: docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirect developer.mozilla.org/en-US/docs/Web/HTTP/…Esta forma es compatible con versiones anteriores de django si no puede admitir RedirectView
En view.py
En la url.py
Puedes hacerlo permanente usando
HttpResponsePermanentRedirectfuente
Estaba tratando de redirigir todos los 404 a la página de inicio y lo siguiente funcionó muy bien:
fuente