python flask 에서 jquery로 데이터 테이블을 구성하는데 데이터가 3만개가 넘어가니 한 번에 로드하는 게 힘들어서 server-side processing을 찾아서 적용하는데
현재 제 코드에서는 데이터 10개만 고정으로 뿌린 후 페이징이나 search 기능들이 똑바로 작동하지 않네요. 어디를 수정해야할까요?
1. HTML 부분
<table id="data_table" class="data_table table table-hover">
<thead>
<tr>
<th>Tag</th><th>EN</th><th>CN</th><th>KO</th><th>Edit</th>
</tr>
</thead>
<tbody id="data_table_tbody">
</tbody>
</table>
2. Javascript 부분
$(function(){
$('#data_table').DataTable( {
"bprocessing" : true,
"bServerSide" : true,
"sAjaxSource" :"/admin_en/datatable",
"sServerMethod": "POST",
"columns" : [
{ "data": "Tag" },
{ "data": "EN" },
{ "data": "CN" },
{ "data": "KO" },
{ "data": "Edit" },
],
"dom" : 'lfBrtip',
"buttons":[
'csv'
]
} );
});//end function
3. Flask의 '/admin_en/datatable' 경로
@app.route("/admin_en/datatable", methods=['POST'])
def admin_en_datatable():
en_filter_table = db.session.query(En_filter)
datatable_data_dict = dict()
datatable_data_list = list()
for data in en_filter_table:
filter_dict = dict()
id = data.id
filter_dict['id'] = id
filter_dict['Tag'] = data.tag
filter_dict['EN'] = data.en_filter
filter_dict['CN'] = data.cn_filter
filter_dict['KO'] = data.ko_filter
filter_dict['Edit'] = "<button>btn</button>"
datatable_data_list.append(filter_dict)
datatable_data_dict['draw'] = 1
datatable_data_dict['recordsTotal'] = int(en_filter_table.count())
datatable_data_dict['recordsFiltered'] = int(en_filter_table.count())
datatable_data_dict['data'] = datatable_data_list[:10]
return jsonify(datatable_data_dict)