Respuestas:
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 a RedirectView
ejecuta inversa para usted en el momento de la llamada utilizando el nombre del patrón dado. Otros parámetros útiles incluyen permanent
yquery_string
.
Esto funciona para mi.
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
En el ejemplo anterior '/'
significa que redirigirá a la página de índice, donde también puede agregar cualquier patrón de URL.
RedirectView
tiene permanent=True
por defecto en versiones anteriores de Django, y permanent=False
por defecto en versiones de Django> = 1.9.
para django v2 +
from django.contrib import admin
from django.shortcuts import redirect
from django.urls import path, include
urlpatterns = [
# this example uses named URL 'hola-home' from app named hola
# for more redirect's usage options: https://docs.djangoproject.com/en/2.1/topics/http/shortcuts/
path('', lambda request: redirect('hola/', permanent=False)),
path('hola/', include("hola.urls")),
path('admin/', admin.site.urls),
]
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
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
En la url.py
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
Puedes hacerlo permanente usando HttpResponsePermanentRedirect