2014-10-02 36 views
0

我使用jQuery庫中的兩個datepickers作爲開始和結束日期。一旦我有兩個日期,我通過ajax將它們發送到我的django視圖。然後在我的視圖中運行模型查詢,這將返回一個過濾的字典到我的Django上下文。我現在的問題是如何重新加載模板上的表格?如何在Django網頁上AJAX成功後重新加載HTML表格?

我必須定義一個Javascript函數來加載一個表並在ajax成功上調用它嗎?或者更好的方法?

HTML

<table class="table table-bordered"> 
<tr> 
    <th>Start Date: <input id="mail_start_date"/></th> 
    <th>End Date: <input id="mail_end_date"/></th> 
    <th><button id='btn'>Filter</button></th> 
</tr> 
<tr> 
    <th>Desk</th> 
    <th># of Packages</th> 
</tr> 
{% for desk, count in pick_dict.items %} 
<tr> 
    <td>{{desk}}</td> 
    <td>{{count}}</td> 
</tr> 
{% endfor %} 

的Javascript

$(document).ready(function(){ 
$('#mail_start_date').datepicker({ dateFormat: "yy-mm-dd" }); 
$('#mail_end_date').datepicker({ dateFormat: "yy-mm-dd" }); 

$('#btn').click(function(){ 
    var start = $('#mail_start_date').val(); 
    var end = $('#mail_end_date').val(); 
    $.ajax({ 
    url: "/apps/centraldesk/mail/stats/", 
    type: "POST", 
    data: { 
     'start': start, 
     'end': end, 
     csrfmiddlewaretoken: '{{ csrf_token }}', 
    }, 
    success: "SOMTHING NEEDS TO HAPPEN HRERE" 
    }); 
}); 

views.py

def mail_stats(request): 
    pick_dict = {} 
    if request.is_ajax(): 
    pick_start = request.POST['start'] 
    pick_end = request.POST['end'] 
    pick_start = str(pick_start) 
    pick_end = str(pick_end) 

    in_date = datetime.datetime.strptime(pick_start, "%Y-%I-%d") 
    out_date = datetime.datetime.strptime(pick_end, "%Y-%I-%d") 

    pick_list = MailRecord.objects.filter(timeIn__range=(pick_start, pick_end)) 
    for item in pick_list: 
     if pick_dict.has_key(item.desk.name): 
     pick_dict[item.desk.name] += 1 
     else: 
     pick_dict[item.desk.name] = 1 

    context = { 
    "mail_list" : mail_list, 
    "pick_dict" : pick_dict, 
    } 
    return render("mail_stats.html", context, context_instance=RequestContext(request, processors=[custom_proc])) 

回答

1

是的,你定義了一個JavaScript函數,像這樣

... 
}, 
success: function(json) { 
    // Access your table here and manipulate it with the returned data from "json" (json is the dictionary given by your django view) 
} 
}); 
... 

您還可以在成功函數旁邊添加錯誤函數。

相關問題