Réponses:
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 incluent permanent
etquery_string
.
Cela fonctionne pour moi.
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
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.
RedirectView
a permanent=True
par défaut dans les anciennes versions de Django, et permanent=False
par défaut dans les versions de Django> = 1.9.
pour 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
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
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
Dans le url.py
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
Vous pouvez le rendre permanent en utilisant HttpResponsePermanentRedirect