편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.04.09

    python flask에서 jquery datatable server-side 사용하는 방법


    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)
    
  • 프로필 김재민님의 편집
    날짜2020.04.09

    python flask에서 jquery datatable server-side 사용하는 방법 도와주세요ㅜㅜ


    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
    
    1. 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)