Respostas:
Se você estiver no Django 1.4 ou 1.5, você pode fazer o seguinte:
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)),
...
Se você estiver no Django 1.6 ou superior, você pode fazer o seguinte:
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
No Django 1.9, o valor padrão de permanentmudou de True para False. Por esse motivo, se você não especificar o permanentargumento da palavra - chave, poderá receber este aviso:
RemovedInDjango19Warning: O valor padrão de 'RedirectView.permanent' mudará de True para False no Django 1.9. Defina um valor explícito para silenciar este aviso.
(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
pattern_nameargumento para RedirectViewexecutar a reversão para você no momento da chamada usando o nome do padrão fornecido. Outros parâmetros úteis incluem permanentequery_string .
Isso funciona para mim.
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
No exemplo acima '/', ele será redirecionado para a página de índice, onde você também pode adicionar qualquer padrão de URL.
RedirectViewtem permanent=Truecomo padrão nas versões mais antigas do Django e permanent=Falsecomo padrão nas versões do 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é o padrão. Para mais detalhes, leia: docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirect developer.mozilla.org/en-US/docs/Web/HTTP/…
Dessa forma, é suportado nas versões mais antigas do django se você não puder suportar o RedirectView
Em view.py
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
No url.py
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
Você pode torná-lo permanente usando HttpResponsePermanentRedirect