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 permanent
ha cambiado de verdadero a falso. Debido a esto, si no especifica el permanent
argumento 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_name
argumento aRedirectView
ejecuta inversa para usted en el momento de la llamada utilizando el nombre del patrón dado. Otros parámetros útiles incluyenpermanent
yquery_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
RedirectView
tienepermanent=True
por defecto en versiones anteriores de Django, ypermanent=False
por defecto en versiones de Django> = 1.9.para django v2 +
fuente
permanent=False
es 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
HttpResponsePermanentRedirect
fuente
Estaba tratando de redirigir todos los 404 a la página de inicio y lo siguiente funcionó muy bien:
fuente