Django

2011-07-01 29 views
5

içinde AJAX kullanarak geçiş Sayfa AJAX kullanarak site navigasyon oluşturmaya çalışıyorum. Farklı görünümlere bağlantı içeren gezinti menüsüne sahibim (şablonda {% url name %} kullanarak). Yapmaya çalıştığım şey, AJAX kullanarak sayfa içeriğini yüklemektir. Yüklemeye çalıştığım sayfa içeriği içerik bloğunda ({% block content %}) eklenmiştir.Django

Bu snippet'i http://djangosnippets.org/snippets/942/ da buldum, ancak önceden tanımladığım görünümleri kullanmak ve yalnızca ajax kullanarak içeriği almak istiyorum.

Herhangi bir öneriniz var mı?

+0

django-pjax ile çözdünüz mü? –

+0

Temelde yaptım. (tek bir istekte birden fazla HTML öğesini güncellememi sağlayan orijinal betiğe birkaç değişiklikle) –

cevap

6

Bu tür bir şey için tam olarak oluşturulan django-pjax kullanmalısınız.

Yapmanız gereken tek şey, temel şablonda, isteğin ajax olup olmadığına bağlı olarak tüm sayfayı veya yalnızca block content numarasını içermektir.

django-pjax, jQuery'yi kullanarak AJAX çağrılarını yapar ve HTML5 push state API'sini kullanarak geçmişi işler, bu da bunu yapmak için çok iyi bir yoldur ve ayrıca IE'nin eski sürümlerinde de incelikle ayrışır.

+0

Bu aslında oldukça havalı. Teşekkürler –

+0

Django 1.2 ile de kullanılabilirse harika olur. – Paolo

3

{% block content %} gibi şablon etiketleri, AJAX'ın gördükleri zamana kadar çoktan gitmiştir. Ne yapmak istediğinizi yaratmak olan bir benzeri içerik bloğunda <div> adlı:

$("#content").load(url, data, loadComplete); 

burada: gerektiğinde

{% block content %} 
<div id="content"></div> 
{% endblock content %} 

Sonra <div> yüklemek için bu (jQuery) kodu gibi bir şey kullanabilirsiniz url, yüklemek istediğiniz URL'dir (karşılığında HTML gelir), data form verisi (varsa; atlanabilir) ve loadComplete, veriler yüklendiğinde çağrılacak isteğe bağlı işlevdir ve function loadComplete(responseText, textStatus, XMLHttpRequest) {...} biçimindedir. . JQuery'yi kullanmak istemiyor olsanız bile, minimize edilmemiş jQuery kaynağını alabilir ve nasıl yaptığını görebilirsiniz.

+0

Gittiğini biliyorum, önerdiğinize benzer bir div var. Burada yapmak istediğim şey, önceden tanımlanan görünümü kullanmak (ajax isteği olmadan kullanılacaktır) ve yalnızca javascript'te işleyebilmem için içerik adındaki bloğun içeriğini döndürecek bazı yanıtlar oluşturmaktır. div içeriği. –