Django'da basit bir yönlendirme (örneğin ColdFusion'da cflocation
veya PHP için header(location:http://)
) nasıl yapılır?Python + Django sayfa yönlendirmesi
cevap
Çok basit: official Django docs
Update
from django.http import HttpResponseRedirect
def myview(request):
...
return HttpResponseRedirect("/path/")
diğer bilgiler: Django 1.0
görünüşte şimdi generic views
kullanarak Django bunu yapmanın daha iyi bir yolu yoktur.
Örnek -
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
generic views documentation daha vardır. Kredi - Carles Barrobés.
Güncelleme # 2: Django 1.3+
redirect_to Django 1.5 olarak artık var ve RedirectView almıştır. Aslında her biri için bir görünüme sahip daha basit bir yolu var Yonatan
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
Kredi yönlendirme - Bunun yapabilirsiniz doğrudanurls.py
yılında: Burada kullanıyorum budur
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, . Ayrıca isteğe bağlı bir Doğru = kalıcı anahtar kelime argüman alır
from django.shortcuts import redirect
def myview(request):
return redirect('/path')
:
için teşekkürler, ancak django ile gelen 'redirect_to' genel görünümünü kullanmak daha kolay ve okunabilir. Carles'in (şu an ne kadar basit olursa olsun) gerçekte olduğu gibi uygulamak yerine, genel bir görünüm kullanmak için http://stackoverflow.com/questions/523356/python-django-page-redirect/3841632#3841632 – Day
Django 1.1 için bir de daha basit redirect kısayol kullanabilirsiniz.
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
(r'^one/$', redirect_to, {'url': '/another/'}),
#etc...
)
daha gelişmiş örnekler için documentation bakınız: (herhangi bir ek ön işlem yapmak için istemiyorsanız yani)
istediğini bağlı olarak, sadece Django'nın redirect_to
jenerik görünümünü kullanmak daha basittir.
:
from django.views.generic import RedirectView
urlpatterns = patterns('',
(r'^one/$', RedirectView.as_view(url='/another/')),
)
+1 yanıtına bakın.) en çok oylanan cevap. – Day
Herhangi bir örnek var mı * Yapma * ek ön işleme yapmak ister misiniz? – niallsco
Ardından, işlemeyi yapan ve daha sonra genel görünümü çağıran özel bir görünüm yazmanızı veya bir dekoratör yazmanızı öneririm. pre_process ve genel görünümü süsleyin: (r '^ bir/$', pre_process (redirect_to), {'url': '/ başka /'}) –
Django sürümü 1.3 ile, sınıf temelli bir yaklaşımdır:
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'),
)
Bu örnek urls.py içinde yaşıyor
Bunu Yönetici bölümünde yapabilirsiniz. Dokümantasyonda açıklandı.
https://docs.djangoproject.com/en/dev/ref/contrib/redirects/
Soruma uymama rağmen, bu yine de ilginç bir bilgi. –
sakının. Bunu bir geliştirme sunucusunda yaptım ve daha sonra değiştirmek istedim. Firefox 5 'caching' 301 redirects
- bunu değiştirmek benim önbelleklerini temizlemek zorunda kaldı. Bu kafa kaşıma gelecekte kaçınmak için, bunu geçici şöyle yapmak başardı: =
from django.views.generic import RedirectView url(r'^source$', RedirectView.as_view(permanent=False, url='/dest/')),
1.5 Django –
page_path urls.py tanımlamak Eğer bir bütün yönlendirmek istiyorsanız
def deletePolls(request):
pollId = deletePool(request.GET['id'])
return HttpResponseRedirect("/page_path/")
'deletePool' için tamam mı? Bu cevap yanlış bir nüsha gibi görünüyor ... –
Alt klasör, RedirectView is actually interpolated yılında url
argüman, yani urls.py
böyle bir şey yapabilirsiniz:
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')),
]
Yakalamak RedirectView
içine ?P<path>
yakalanacaktır. Bu yakalanan değişken, orijinal yolunuz /old/yay/mypath
ise /new_path/yay/mypath
veren bize verdi url
bağımsız değişkeni değiştirilir.
Sorgu dizesini de kopyalamak isterseniz, ….as_view(url='…', query_string=True)
da yapabilirsiniz.
Bu django çoğu sürümlerinde çalışması gerekir, ben 1.6.5 bunu kullanıyorum:
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'),
....
)
Hala yerine bu çözüm ile sabit kodlanmış url'nin url modeli adı kullanabilirsiniz. Url'den location_id parametresi lambda işlevine geçirilir.
- 1. Tek sayfa http yönlendirmesi https
- 2. Python ile giriş yönlendirmesi
- 3. Django uygulaması, sayfa yenileme
- 4. HTTPS yönlendirmesi yalnızca sayfa yeniden yüklendiğinde çalışır
- 5. Selenium'da bir sayfa yönlendirmesi nasıl beklenir?
- 6. ASP.NET MVC sayfası/alt sayfa yönlendirmesi
- 7. Sayfa bulunamadı 404 Django?
- 8. https'e Flask-Python yönlendirmesi Bağlantı sıfırlandı
- 9. Python: django
- 10. Python django
- 11. Python/Django -
- 12. Django ana sayfa nasıl ayarlanır
- 13. Django Yönetici 'Sayfa bulunamadı/admin/
- 14. Express Passport.js Başarı yönlendirmesi sayfa yüklenmiyor, beklemede tutuluyor
- 15. Onsen UI sayfa yönlendirmesi özelliği görünüm ve portre için
- 16. DOMPDF sayfa yönlendirmesi hem yatay hem de dikey olarak
- 17. Ctypes ile stdout yönlendirmesi
- 18. Ajax isteklerini normal sayfa görüntülemelerinden ayıran python
- 19. Python/Django boş sorguları döndürüyor
- 20. Python/Django Bu dize
- 21. Python Django Global Değişkenler
- 22. Django/Python assert
- 23. Django python manage.py geçişi
- 24. Django ReportLab Çerçeveyi Kullanarak Birden Fazla Sayfa
- 25. Sayfa ürünlerini göster django pagination içinde gösterme
- 26. Django CMS - ana sayfa nasıl algılanır?
- 27. Tek sayfa uygulama Angularjs Django giriş formu
- 28. Sayfa başı seçiciyi Django admin listesine ekleme
- 29. Birim Sınama Önyükleme Modal Yönlendirmesi
- 30. Strolut yönlendirmesi olan Python altişlemi bir int dönüyor
Bu, artık Django 1.0'daki en iyi yöntem değildir. Bu cevaba bakın: http://stackoverflow.com/questions/523356/python-django-page-redirect/3841632#3841632 – Jake
Neden 'django.shortcuts'dan' yönlendirme' kullanmıyorsunuz? –
Kullanıyorum '('^ pattern/$', lambda x: yönlendirme ('/ yönlendirme/url /'))' – mrmagooey