SORU
19 Mayıs 2009, Salı


İşleme nesneleri bir Ajax çağrısından sonra Django şablon kullanarak JSON

En iyi şekilde Django Ajax yapmak için ne olduğunu anlamaya çalışıyorum. Burada ve orada şeyler okuyarak ortak süreç olduğunu anladım:

  1. Ajax arama JavaScript kütüphane (örneğin, jQuery), çağrı yakalar ve görünüm bir işlev için geçen Django URL deseni ayarlamak biraz kullanarak formüle

  2. içinde Python view almak nesneleri ilgilendi ve onları geri göndermek için istemci JSON formatında ya da benzer (kullanarak inşa seri hale getirici modülü veya simplejson)

  3. JSON verileri alır ve onları ayrıştırmak JavaScript geri arama fonksiyonu tanımlamak, görüntülenmek için gereken her şeyi oluşturmak için. Son olarak, JavaScript script kalmalı her yerde HTML koyar.

Ben hala alamadım şimdi ne olacaknasıl Django şablonları bu tüm ilgili?Görünüşe göre, tüm şablonları güç kullanımı yapmıyoruz. İdeal olarak, veri yineledi bitecek diye bir JSON nesnesi ve bir şablon adı söylemek için güzel olur diye düşündüm ve HTML bir blok oluşturulur. Ama belki de tamamen yanlış burada

Bu yöne giden bulduğum tek kaynak this snippet (769) ama henüz hiç denemedim. Belli ki, bu durumda ne olacak elde edilen tüm HTML sunucu tarafında, istemci geçti oluşturulur. JavaScript geri arama fonksiyonu sadece doğru yerde görüntülemek için vardır.

Bu performans sorunlarına neden olur mu? Değilse bile yukarıdaki Pasajı kullanmadan, neden HTML doğrudan arka uç Python yerine ön uç kullanarak biçimlendirme değil mi?

Çok teşekkürler!

GÜNCELLEME: yukarıdaki geliştirilmiş bir versiyonudur çünkü 11* *kullanın lütfen!Kalıtım desteğini bu şekilde.. çok daha iyi çalıştığını buldum

CEVAP
19 Mayıs 2009, Salı


Teşekkürler vikingosegundo Hey!

Çok dekoratörler kullanarak seviyorum :-). Ama bu arada yaklaşım yukarıda bahsettiğim parçacığı tarafından önerilen takip ediyorum. the snippet n. 942 bunu neden yerine tek şey, kullanmak orijinal bir geliştirilmiş bir versiyonu. İşte nasıl çalışır:

Bir şablona sahip olduğunuzu hayal edin (örneğin, 'subtemplate.html') yararlı bir blok içerir ne olursa olsun yeniden kullanabilirsiniz:

     ........
	<div id="results">			
		{% block results %}
			{% for el in items %}
		           <li>{{el|capfirst}}</li>
			{% endfor %}
		{% endblock %}		
	</div><br />
     ........

İthal ederek görüntüleme şablonlar herhangi bir blok için kolayca başvuru yapabilirsiniz yukarıdaki parçacık dosyası. Serin bir özellik şablonları arasında miras ilişkileri başka bir blok içeren bir blok için başvuru çok olursa dikkate alınır ve böylece her şey iyi çalışması gerekir. Yani, ajax-görünüm şuna benzer:

from django.template import loader
# downloaded from djangosnippets.com[942]
from my_project.snippets.template import render_block_to_string

def ajax_view(request):
    # some random context
    context = Context({'items': range(100)})
    # passing the template_name   block_name   context
    return_str = render_block_to_string('standard/subtemplate.html', 'results', context)
    return HttpResponse(return_str)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bmarian22

    bmarian22

    22 Aralık 2007
  • max2sims2

    max2sims2

    19 Kasım 2008
  • TheXiaxue

    TheXiaxue

    3 AĞUSTOS 2009