जवाबों:
यदि आप Django 1.4 या 1.5 पर हैं, तो आप यह कर सकते हैं:
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)),
...
यदि आप Django 1.6 या इसके बाद के संस्करण पर हैं, तो आप यह कर सकते हैं:
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
Django 1.9 में, डिफ़ॉल्ट मान permanentट्रू से गलत में बदल गया है। इस कारण, यदि आप permanentकीवर्ड तर्क निर्दिष्ट नहीं करते हैं, तो आप यह चेतावनी देख सकते हैं:
हटाए गए InDjango1919 चेतावनी: 'RedirectView.permanent' का डिफ़ॉल्ट मान ट्रू से Django 1.9 में बदल जाएगा। इस चेतावनी को चुप करने के लिए एक स्पष्ट मूल्य निर्धारित करें।
(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
pattern_nameतर्क RedirectView। अन्य उपयोगी मापदंडों में शामिल हैं permanentऔरquery_string ।
यह मेरे लिए काम करता है।
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
उपरोक्त उदाहरण में '/'इसका मतलब है कि यह इंडेक्स पेज पर रीडायरेक्ट करेगा, जहां आप किसी भी यूआरएल पैटर्न को भी जोड़ सकते हैं।
RedirectViewहै permanent=TrueDjango के पुराने संस्करणों में डिफ़ॉल्ट के रूप में, और permanent=FalseDjango संस्करण> = 1.9 में डिफ़ॉल्ट के रूप में।
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डिफ़ॉल्ट है। अधिक जानकारी के लिए कृपया पढ़ें: docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirect developer.mozilla.org/en-US/docs/Web/HTTP/…
यदि आप RedirectView का समर्थन नहीं कर सकते हैं तो यह तरीका django के पुराने संस्करणों में समर्थित है
देखने में
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
Url.py में
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
आप इसका उपयोग करके इसे स्थायी बना सकते हैं HttpResponsePermanentRedirect