我是一个新的Django用户,遇到了问题。我想获取我的jQuery Datatables数据的自动刷新,显示我的新数据库内容,而无需重新加载整个html页面(使用ajax请求)。我浏览了很多帖子,但没有找到我的帖子......
这是我的Django template.html:
{% block js %}
<script type="text/javascript" language="javascript" class="init">
$(document).ready(function(){
var oTable = $('#db_name').DataTable();
} );
setInterval(function () {
oTable.ajax.reload();
}, 2000 );
} );
</script>
{% endblock %}
我的views.py:
def db_update(request):
watch_files()
all_ = db.objects.all()
return render_to_response('supervision.html', {'all_fields': all_})
问题是错误消息&#34;数据表警告:表id = db_name - 无效的JSON响应&#34;显示每2秒。我认为这是正常的,因为没有JSON。尽管出现此错误,重新加载仍然有效:如果我进行手动刷新(F5),我的数据库中添加的所有新数据(函数watch_files在其中创建条目)都会出现在我的页面中。 对我来说,理想的是获得透明数据自动刷新,保持Datatables数组的当前排序/页面选项。
我也试过这个,尝试传递JSON,但没有成功:
$(document).ready(function() {
var oTable = $('#db_name').DataTable( {
ajax: {{obj_as_json}}
} );
setInterval(function () {
/* oTable.ajax.reload(); */
oTable.fnReloadAjax();
/* oTable.fnDraw(); */
}, 2000 );
} );
def db_update(request):
watch_files()
all_ = db.objects.all()
jsondata = serializers.serialize('json', all_)
return render_to_response('supervision.html', {
'obj_as_json':json.dumps(jsondata),
'all_fields': all_})
如果有人能帮助我,那就太好了。 谢谢,克里斯托夫
答案 0 :(得分:0)
render_to_response('supervision.html')
始终返回由supervision.html
模板生成的html内容。
您需要返回仅包含json数据的JsonResponse对象。
from django.http import JsonResponse
def db_update(request):
watch_files()
all_ = db.objects.all()
if request.is_ajax():
jsondata = serializers.serialize('json', all_)
return JsonResponse(jsondata)
else:
return render_to_response('supervision.html', {
'all_fields': all_})
此外,您需要将all_
变量转换为类似于数据表的预期
{
"data": [
[ "column1_val",
"column2_val",
...
],
]
}
我建议您查看https://github.com/pivotal-energy-solutions/django-datatable-view实施