2016-11-22 51 views
0

我一直在試圖找出過去幾個小時沒有運氣的問題。Ajax調用來獲取新的JSON數據來更新Django模板

我想讓我的django模板在用戶接近底部時將新的json數據加載到用戶的屏幕上。基本上我想讓我的django應用程序加載內容,因爲我滾動。

這是我增加如何偏移從API

$(window).scroll(function() { 
if($(window).scrollTop() + $(window).height() == $(document).height()) { 
    alert("Requesting new data"); 
    offset++; 
    $.post('/releases/fetch/', {'offset': offset}, function(data){ 
     console.log("---") 
     console.log(data); 
     console.log("---") 
    }); 
} 
}); 

我得到了新的JSON我想要的,所以阿賈克斯的後運作良好,並偏移增量獲取新的數據。現在,我得到了這個新的JSON,我想渲染我的模板的其餘部分,或者我想將我作爲dom元素獲得的JSON渲染到我的頁面。

這是Django的視圖我呼籲我的AJA的職位

def ajax_view(request): 
if request.is_ajax(): 
    offset = request.POST['offset'] 
    games = services.get_games(offset) 
    return HttpResponse(games) 
return HttpResponse("Get out!! 404") 

SO我稱Django的渲染,而不是HttpResponse對象?

哦,這是Django的類視圖呈現模板我談論

class HomePage(TemplateView): 
    def get(self, request): 
    # Sends the json to the template 
    games = services.get_games(0) 
    return render(request, 'releases/game_list.html', {"games": games}) 

謝謝!

+0

您是否正在返回ajax或視圖? – madalinivascu

+0

爲什麼你不能只使用相同的代碼?它正在做同樣的事情。 –

回答

0

您可以嘗試在您的視圖中呈現模板並將其發送回HttpResponse

from django.template import loader, Context 

def ajax_view(request): 
    if request.is_ajax(): 
     offset = request.POST['offset'] 
     games = services.get_games(offset) 
     template = loader.get_template('releases/game_list.html') 
     context = {"games": games} 
     rendered_content = template.render(context) 
     return HttpResponse(rendered_content) 
    return HttpResponse("Get out!! 404") 
相關問題