উত্তর:
ইহা সহজ:
from django.http import HttpResponseRedirect
def myview(request):
...
return HttpResponseRedirect("/path/")
অফিসিয়াল জ্যাঙ্গো ডক্সে আরও তথ্য
আপডেট: জাজানো 1.0
দৃশ্যত জ্যাঙ্গোতে এখন এটি করার আরও ভাল উপায় রয়েছে generic views
।
উদাহরণ -
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
সেখানে বেশি জেনেরিক মতামত ডকুমেন্টেশন । ক্রেডিট - কার্লস ব্যারোবস ।
আপডেট # 2: জাজানো 1.3+
জ্যাঙ্গো 1.5 তে পুনর্নির্দেশ_এর আর অস্তিত্ব নেই এবং রেডিরেক্টভিউ দ্বারা প্রতিস্থাপন করা হয়েছে । যোনাতনকে কৃতিত্ব
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
redirect
থেকে ব্যবহার করছেন না কেন django.shortcuts
?
('^pattern/$', lambda x: redirect('/redirect/url/'))
আপনি কী চান তার উপর নির্ভর করে (যেমন আপনি কোনও অতিরিক্ত প্রাক প্রক্রিয়াজাতকরণ করতে না চান), কেবল জাঙ্গোর redirect_to
জেনেরিক দৃষ্টিভঙ্গিটি ব্যবহার করা সহজ :
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
আরও উন্নত উদাহরণগুলির জন্য ডকুমেন্টেশন দেখুন ।
জাজানো 1.3+ ব্যবহারের জন্য:
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
বাস্তবে এমন কোনো প্রতিটি পুনর্নির্দেশ জন্য একটি দৃশ্য থাকার চেয়ে সহজ উপায় আছে - আপনি এটা করতে পারেন সরাসরি মধ্যে urls.py
:
from django.http import HttpResponsePermanentRedirect
urlpatterns = patterns(
'',
# ...normal patterns here...
(r'^bad-old-link\.php',
lambda request: HttpResponsePermanentRedirect('/nice-link')),
)
একটি লক্ষ্য কলযোগ্য পাশাপাশি স্ট্রিংও হতে পারে যা আমি এখানে ব্যবহার করছি।
redirect_to
জ্যাঙ্গোর সাথে আসা জেনেরিক ভিউটি ব্যবহার করা সহজতর এবং আরও পঠনযোগ্য। কার্লস উত্তর stackoverflow.com/questions/523356/python-django-page-redirect/… দেখুন
জ্যাঙ্গো ১.১ থেকে আপনি সরল পুনর্নির্দেশ শর্টকাটটিও ব্যবহার করতে পারেন :
from django.shortcuts import redirect
def myview(request):
return redirect('/path')
এটি একটি alচ্ছিক স্থায়ী = সত্য কীওয়ার্ড আর্গুমেন্টও গ্রহণ করে।
আপনি যদি একটি সম্পূর্ণ সাব-ফোল্ডার পুনর্নির্দেশ করতে চান, তবে রিডাইরেক্টভিউতে url
যুক্তিটি আসলে ইন্টারপোল্টেড , সুতরাং আপনি এর মতো কিছু করতে পারেন urls.py
:
from django.conf.urls.defaults import url
from django.views.generic import RedirectView
urlpatterns = [
url(r'^old/(?P<path>.*)$', RedirectView.as_view(url='/new_path/%(path)s')),
]
?P<path>
আপনি ক্যাপচার মধ্যে প্রতিপালিত হবে RedirectView
। এই ক্যাপচারেড ভেরিয়েবলটি url
আপনার দেওয়া যুক্তির পরিবর্তে প্রতিস্থাপন করা হবে , /new_path/yay/mypath
আপনার আসল পথটি যদি আমাদের দেওয়া হত giving/old/yay/mypath
।
আপনি ….as_view(url='…', query_string=True)
যদি কোয়েরি স্ট্রিংটি অনুলিপি করতে চান তবে আপনিও করতে পারেন ।
জাজানো সংস্করণ ১.৩ সহ ক্লাস ভিত্তিক পদ্ধতিটি হ'ল:
from django.conf.urls.defaults import patterns, url
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-url/$', RedirectView.as_view(url='/redirect-url/'), name='some_redirect'),
)
এই উদাহরণটি url.py এ থাকে
সতর্ক থাকুন। আমি এটি ডেভলপমেন্ট সার্ভারে করেছি এবং পরে এটি পরিবর্তন করতে চেয়েছিলাম।
এটি পরিবর্তন করার জন্য আমাকে আমার ক্যাশেগুলি সাফ করতে হয়েছিল। ভবিষ্যতে এই মাথা চুলকানো এড়ানোর জন্য, আমি এটিকে এভাবে অস্থায়ী করতে সক্ষম হয়েছি:
from django.views.generic import RedirectView
url(r'^source$', RedirectView.as_view(permanent=False,
url='/dest/')),
আপনি প্রশাসন বিভাগে এটি করতে পারেন। এটি ডকুমেন্টেশনে ব্যাখ্যা করা হয়েছে।
https://docs.djangoproject.com/en/dev/ref/contrib/redirects/
এটি জাঙ্গোর বেশিরভাগ সংস্করণে কাজ করা উচিত, আমি এটি 1.6.5 এ ব্যবহার করছি:
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
urlpatterns = patterns('',
....
url(r'^(?P<location_id>\d+)/$', lambda x, location_id: HttpResponseRedirect(reverse('dailyreport_location', args=[location_id])), name='location_stats_redirect'),
....
)
আপনি এখনও এই সমাধানটির সাথে একটি হার্ড কোডড ইউআরএলের পরিবর্তে url প্যাটার্নটির নাম ব্যবহার করতে পারেন। ইউআরএল থেকে অবস্থান_আইডি প্যারামিটারটি ল্যাম্বদা ফাংশনে নিচে চলে গেছে।