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

  • Elly

    Elly

    3 EKİM 2005
  • TheDamnWreckless

    TheDamnWreck

    12 Temmuz 2010
  • VOICE TV

    VOICE TV

    2 Aralık 2010