Risposte:
Se sei su Django 1.4 o 1.5, puoi farlo:
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 sei su Django 1.6 o versioni successive, puoi farlo:
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
In Django 1.9, il valore predefinito di permanentè cambiato da Vero a Falso. Per questo motivo, se non si specifica l' permanentargomento della parola chiave, è possibile che venga visualizzato questo avviso:
RemovedInDjango19Avvertenza: il valore predefinito di 'RedirectView.permanent' cambierà da Vero a Falso in Django 1.9. Impostare un valore esplicito per silenziare questo avviso.
(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
pattern_nameargomento per RedirectVieweseguire l'inverso per te al momento della chiamata usando il nome del modello dato. Altri parametri utili includono permanentequery_string .
Questo funziona per me.
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
Nell'esempio precedente '/'significa che reindirizzerà alla pagina dell'indice, dove è possibile aggiungere anche eventuali pattern URL.
RedirectViewha permanent=Truecome predefinito nelle versioni precedenti di Django e permanent=Falsecome predefinito nelle versioni Django> = 1.9.
per 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è l'impostazione predefinita. Per maggiori dettagli, leggi: docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirect developer.mozilla.org/en-US/docs/Web/HTTP/…
In questo modo è supportato nelle versioni precedenti di django se non è possibile supportare RedirectView
In view.py
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
In url.py
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
Puoi renderlo permanente usando HttpResponsePermanentRedirect