Jeśli korzystasz z Django 1.4 lub 1.5, możesz to zrobić:
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)),
...
Jeśli korzystasz z Django 1.6 lub nowszego, możesz to zrobić:
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
W Django 1.9 domyślna wartość permanent
zmieniła się z True na False. Z tego powodu, jeśli nie określisz permanent
argumentu słowa kluczowego, możesz zobaczyć następujące ostrzeżenie:
RemovedInDjango19Warning: Domyślna wartość „RedirectView.permanent” zmieni się z True na False w Django 1.9. Ustaw jawną wartość, aby wyciszyć to ostrzeżenie.
(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
pattern_name
argumentu doRedirectView
wykonania odwrotnego za Ciebie w czasie wywołania przy użyciu podanej nazwy wzorca. Inne przydatne parametry obejmująpermanent
iquery_string
.To działa dla mnie.
W powyższym przykładzie
'/'
oznacza, że przekieruje do strony indeksowej, na której możesz również dodać dowolne wzorce adresów URL.źródło
RedirectView
mapermanent=True
domyślnie w starszych wersji Django, apermanent=False
jako domyślny w Django wersji> = 1.9.dla django v2 +
źródło
permanent=False
jest to ustawienie domyślne. Aby uzyskać więcej informacji, przeczytaj: docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirect developer.mozilla.org/en-US/docs/Web/HTTP/ ...Ten sposób jest obsługiwany w starszych wersjach django, jeśli nie możesz obsługiwać RedirectView
In view.py
W pliku url.py
Możesz to uczynić na stałe, używając
HttpResponsePermanentRedirect
źródło
Próbowałem przekierować wszystkie 404 na stronę główną i następujące rzeczy działały świetnie:
źródło