¿Redireccionar al patrón de URL nombrado directamente desde urls.py en django?

En Django, ¿cómo puedo hacer un simple redireccionamiento directamente desde urls.py? Naturalmente, soy un tipo bien organizado, que favorece el principio DRY, por lo que me gustaría obtener el objective en función de su patrón de URL, en lugar de codificar la URL.

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 estás en Django 1.6 o superior, puedes 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 argumento de palabra clave permanent , 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.

Esto funciona para mí

 from django.views.generic import RedirectView urlpatterns = patterns('', url(r'^some-page/$', RedirectView.as_view(url='/')), ... 

En el ejemplo anterior, '/' significa que redireccionará a la página de índice, donde también puede agregar patrones de url.

De esta manera es compatible con las versiones anteriores de django si no puede admitir RedirectView

En view.py

 def url_redirect(request): return HttpResponseRedirect("/new_url/") 

En url.py

 url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"), 

Puede hacerlo permanente utilizando HttpResponsePermanentRedirect

Estaba tratando de redirigir todos los 404 a la página de inicio y lo siguiente funcionó muy bien:

 from django.views.generic import RedirectView ... under urlpatterns, added: url(r'^.*/$', RedirectView.as_view(url='/home/')), url(r'^$', RedirectView.as_view(url='/home/')), 

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-home', permanent=False)), path('hola/', include("hola.urls")), path('admin/', admin.site.urls), ]