2013-04-19 19 views
9

kullanarak nasıl işleyebilirim? Arama sonuçlarından gelen verileri sıralamak için ajax kullanıyorum. html'nin yalnızca bir kısmını django

Şimdi bunun i bu şekilde yükleyebilir ve böylece html sadece bir kısmını işlemek mümkün olup olmadığını merak ediyorum:

$('#result').html(' ').load('/sort/?sortid=' + sortid);

yapıyorum ama tepki olarak tüm html sayfası alıyorum ve tüm html sayfasını, korkunç olan mevcut sayfaya ekliyor.

bu

def sort(request): 
    sortid = request.GET.get('sortid') 
    ratings = Bewertung.objects.order_by(sortid) 
    locations = Location.objects.filter(locations_bewertung__in=ratings) 
    return render_to_response('result-page.html',{'locs':locations},context_instance=RequestContext(request)) 

nasıl sadece o <div id="result"> </div> benim bakış işlevinden işleyebilen benim views.py mı? ya da burada yanlış yapıyorum?

cevap

15

Anjadığımdan, ajax isteği aldığınızda aynı görünümü farklı bir şekilde ele almak istiyorsunuz. result-page.html öğenizi iki şablona bölmenizi öneririm, yalnızca istediğiniz dizeyi içeren ve diğer her şeyi içeren ve diğer şablonu içeren (bkz. django's include tag). Size göre

o zaman böyle bir şey yapabilirsiniz:

def sort(request): 
    sortid = request.GET.get('sortid') 
    ratings = Bewertung.objects.order_by(sortid) 
    locations = Location.objects.filter(locations_bewertung__in=ratings) 
    if request.is_ajax(): 
     template = 'partial-results.html' 
    else: 
     template = 'result-page.html' 
    return render_to_response(template, {'locs':locations},context_instance=RequestContext(request)) 

sonuç sayfa.html:

<html> 
    <div> blah blah</div> 
    <div id="results"> 
     {% include "partial-results.html" %} 
    </div> 
    <div> some more stuff </div> 
</html> 

kısmi results.html: sen

{% for location in locs %} 
    {{ location }} 
{% endfor %} 
+0

deha. çok teşekkürler – doniyor

+0

Bu basit ve zeki – Medorator

İlgili konular