मैं Django में एक साधारण रीडायरेक्ट (उदा। cflocation
कोल्डफ्यूजन में, या header(location:http://)
PHP के लिए) कैसे पूरा करूं?पायथन + Django पृष्ठ रीडायरेक्ट
उत्तर
यह सरल है: में official Django docs
अद्यतन
from django.http import HttpResponseRedirect
def myview(request):
...
return HttpResponseRedirect("/path/")
और जानकारी: Django 1.0
वहाँ जाहिरा तौर पर Django में यह कर अब generic views
का उपयोग करने का एक बेहतर तरीका है।
उदाहरण -
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
वहाँ generic views documentation में अधिक है। क्रेडिट - Carles Barrobés।
अद्यतन # 2: Django 1.3+
Django 1.5 redirect_to में अब मौजूद नहीं है और RedirectView ने ले लिया है। क्रेडिट वास्तव में से प्रत्येक के लिए एक दृश्य की तुलना में एक सरल तरीका है Yonatan
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')),
)
A target can be a callable as well as a string, जो कि मैं यहाँ क्या उपयोग कर रहा हूँ ।
from django.shortcuts import redirect
def myview(request):
return redirect('/path')
यह भी एक वैकल्पिक स्थायी = सच कीवर्ड तर्क लेता है:
सच के लिए धन्यवाद, लेकिन dpgango के साथ आने वाले 'redirect_to' जेनेरिक व्यू का उपयोग करना अभी भी सरल और अधिक पठनीय है। Carles उत्तर http://stackoverflow.com/questions/523356/python-django-page-redirect/3841632#3841632 – Day
Django 1.1 के बाद से, आप भी सरल redirect शॉर्टकट का उपयोग कर सकते हैं।
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
अधिक उन्नत उदाहरण के लिए documentation देखें:
आप क्या चाहते हैं पर निर्भर करता है (अर्थात, अगर आप किसी भी अतिरिक्त पूर्व प्रसंस्करण करने के लिए नहीं करना चाहते हैं), यह आसान सिर्फ Django के redirect_to
सामान्य दृश्य का उपयोग करने के लिए है।
Django 1.3+ उपयोग के लिए:
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
+1 अपने आप को लागू करने के बजाए एक सामान्य दृश्य का उपयोग करने के लिए देखें (चाहे कितना आसान हो) (वर्तमान में)) शीर्ष मतदान जवाब। – Day
क्या आपके पास कोई उदाहरण है यदि आप * अतिरिक्त * प्री-प्रोसेसिंग करना चाहते हैं? – niallsco
तो मैं सुझाव दूंगा कि या तो एक कस्टम व्यू लिखें जो प्रसंस्करण करता है और फिर जेनेरिक व्यू को कॉल करता है, या सजावट लिखता है उदा। pre_process और जेनेरिक व्यू को सजाने के लिए: (आर '^ एक/$', pre_process (redirect_to), {'url': '/ another /'}) –
Django संस्करण 1.3 के साथ, वर्ग आधारित दृष्टिकोण है:
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'),
)
यह उदाहरण urls.py में में रहती है
आप इसे व्यवस्थापक अनुभाग में कर सकते हैं। यह दस्तावेज़ीकरण में समझाया गया है।
https://docs.djangoproject.com/en/dev/ref/contrib/redirects/
हालांकि मेरे प्रश्न से काफी प्रासंगिक नहीं है, यह अभी भी जानकारी का एक दिलचस्प हिस्सा है। –
खबरदार। मैंने इसे विकास सर्वर पर किया और बाद में इसे बदलना चाहता था।
मैं अपने कैश स्पष्ट करने के लिए इसे बदलने के लिए किया था। आदेश में इस सिर खरोंच भविष्य में से बचने के लिए, मैं इसे अस्थायी इसलिए की तरह बनाने के लिए कर रहा था:
from django.views.generic import RedirectView
url(r'^source$', RedirectView.as_view(permanent=False,
url='/dest/')),
1.5 Django –
page_path = urls.py में परिभाषित
def deletePolls(request):
pollId = deletePool(request.GET['id'])
return HttpResponseRedirect("/page_path/")
'deletePool' के लिए ठीक है? यह जवाब एक गलत जगह कॉपी-एन-पेस्ट की तरह लगता है ... –
आप एक पूरे रीडायरेक्ट करने के लिए चाहते हैं सबफ़ोल्डर, RedirectView is actually interpolated में 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
यदि आपका मूल पथ /old/yay/mypath
था।
यदि आप क्वेरी स्ट्रिंग को भी प्रतिलिपि बनाना चाहते हैं तो आप ….as_view(url='…', query_string=True)
भी कर सकते हैं।
यह Django के सबसे संस्करणों में काम करना चाहिए, मैं इसे 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'),
....
)
आप अभी भी इस समाधान के साथ एक हार्ड कोडित यूआरएल के बजाय यूआरएल ढांचा के नाम का उपयोग कर सकते हैं। यूआरएल से location_id पैरामीटर लैम्ब्डा फ़ंक्शन पर पास किया जाता है।
- 1. Django URL रीडायरेक्ट
- 2. Django में रीडायरेक्ट/उसी (पिछले) पृष्ठ पर वापस लौटें?
- 3. IIS7 404 रीडायरेक्ट पृष्ठ
- 4. Django Apache रीडायरेक्ट समस्या
- 5. रखरखाव पृष्ठ पर अस्थायी रीडायरेक्ट
- 6. Django व्यवस्थापक लॉगिन पृष्ठ सही लॉगिन प्रमाण-पत्रों पर उसी पृष्ठ पर रीडायरेक्ट करता है
- 7. django व्यवस्थापक अनुक्रमणिका पृष्ठ
- 8. प्रारंभ पृष्ठ चुनें django-cms
- 9. पायथन प्रत्येक रीडायरेक्ट
- 10. django रीडायरेक्ट() पैरामीटर के साथ
- 11. Django कस्टम URL पर रीडायरेक्ट
- 12. Django स्थिर पृष्ठ?
- 13. वृद्धि पृष्ठ Django
- 14. Django व्यवस्थापक पृष्ठ
- 15. Django व्यवस्थापक पृष्ठ
- 16. Django 1.5 अनुक्रमणिका पृष्ठ
- 17. Django गतिशील पृष्ठ
- 18. django व्यवस्थापक पृष्ठ
- 19. किसी पृष्ठ को 5 सेकंड के लिए किसी अन्य पृष्ठ पर रीडायरेक्ट करना, फिर रीडायरेक्ट करना
- 20. पायथन/Django
- 21. पायथन django
- 22. Django (पायथन)
- 23. पायथन/django
- 24. पायथन Django
- 25. पायथन/Django
- 26. पायथन: django
- 27. Django रूप रीडायरेक्ट का उपयोग कर HttpResponseRedirect
- 28. सी # का पता लगाने के पृष्ठ रीडायरेक्ट
- 29. एक ही पृष्ठ पर रीडायरेक्ट लंगर
- 30. जेएसएफ नेविगेशन पिछले पृष्ठ पर रीडायरेक्ट
यह अब Django 1.0 के रूप में सबसे अच्छी विधि नहीं है। यह उत्तर देखें: http://stackoverflow.com/questions/523356/python-django-page-redirect/3841632#3841632 – Jake
'django.shortcuts' से' redirect' का उपयोग क्यों नहीं करें? –
मैं '('^ पैटर्न/$', लैम्ब्डा एक्स: रीडायरेक्ट ('/ रीडायरेक्ट/यूआरएल /') का उपयोग करता हूं)' – mrmagooey