Si vous êtes sur Django 1.4 ou 1.5, vous pouvez faire ceci:
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 vous êtes sur Django 1.6 ou supérieur, vous pouvez le faire:
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
Dans Django 1.9, la valeur par défaut de permanent
est passée de True à False. Pour cette raison, si vous ne spécifiez pas l' permanent
argument de mot - clé, vous pouvez voir cet avertissement:
RemovedInDjango19Warning: la valeur par défaut de 'RedirectView.permanent' passera de True à False dans Django 1.9. Définissez une valeur explicite pour faire taire cet avertissement.
(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
pattern_name
argument àRedirectView
exécute l'inverse pour vous au moment de l'appel en utilisant le nom de modèle donné. D'autres paramètres utiles incluentpermanent
etquery_string
.Cela fonctionne pour moi.
Dans l'exemple ci-dessus
'/'
, cela signifie qu'il sera redirigé vers la page d'index, où vous pouvez également ajouter des modèles d'URL.la source
RedirectView
apermanent=True
par défaut dans les anciennes versions de Django, etpermanent=False
par défaut dans les versions de Django> = 1.9.pour django v2 +
la source
permanent=False
la valeur par défaut. Pour plus de détails, veuillez lire: docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirect developer.mozilla.org/en-US/docs/Web/HTTP/…Cette méthode est prise en charge dans les anciennes versions de django si vous ne pouvez pas prendre en charge RedirectView
Dans view.py
Dans le url.py
Vous pouvez le rendre permanent en utilisant
HttpResponsePermanentRedirect
la source
J'essayais de rediriger tous les 404 vers la page d'accueil et ce qui suit a très bien fonctionné:
la source