Как отобразить массив Python в Datatables? - PullRequest
0 голосов
/ 31 октября 2018

Я использую Flask, у меня есть массив, который я прочитал из базы данных, массив выглядит как [["customer", "address", "PPL"], ["customer2", "address2", "PPL2 «]]

Используя плагин DataTables, я хочу, чтобы «customer» и «customer2» отображались в столбце customer, «address» и «address2» отображались в столбце адреса, а «PPL» и «PPL2» в столбце PPL. Я могу сделать это с помощью цикла for в моем HTML, но это портит мое форматирование DataTable и удаляет поле поиска и кнопки prev / next из таблицы. Как я могу получить эти значения для заполнения ячеек в таблице данных?

Код Python:

def hello():

mariadb_connection = mariadb.connect(user='root', password='pwd', 
database='customers')
cursor = mariadb_connection.cursor()

cursor.execute("SELECT * from customer_info")
data = cursor.fetchall()
cursor.close()


namesdb = json.dumps(data)


return render_template('select_customer.html', namesdb=namesdb)

HTML:

<table id="example" class="table text-dark table-striped table-bordered 
  display" style="width:100%">

    <thead class="text-white">

        <tr>

            <th>Customer</th>

            <th>Address</th>

            <th>Price per Litre</th>


        </tr>

    </thead>

    <tbody>

    <tr>

            <td>{{namesdb}}</td>

            <td></td>

            <td></td>



        </tr>




    </tbody>

    <tfoot>

        <tr>



        </tr>

    </tfoot>

</table>

</div>
</div>
</div>

 </div>
</div>

Я был связан с этим сообщением, Как структурировать данные, чтобы легко создавать HTML-таблицы во Flask ,

но, как уже упоминалось, использование этого цикла for заполняет столбцы таблицы DataTables, но цикл for, кажется, удаляет поле поиска и кнопки prev / next.

script.js

  $(document).ready(function() {
 var table = $('#example').DataTable();
 $('#example tbody').on( 'click', 'tr', function () {
     $(this).toggleClass('selected');
  } );

 $('#button').click( function () {

alert( table.rows('.selected').data().length +' 
 row(s) selected' );

 } );

 } );

1 Ответ

0 голосов
/ 01 ноября 2018

Прежде всего, не json.dumps ваши данные перед отправкой в ​​шаблон.

def hello():

    mariadb_connection = mariadb.connect(user='root', password='pwd', 
    database='customers')
    cursor = mariadb_connection.cursor()

    cursor.execute("SELECT * from customer_info")
    namesdb = cursor.fetchall()
    cursor.close()

    return render_template('select_customer.html', namesdb=namesdb)

Просто используйте питонический список кортежей в Jinja.

{%- for item in namesdb -%}
<tr>
    <td>{{ item[0] }}</td>
    <td>{{ item[1] }}</td>
    <td></td>
</tr>
{%- endfor -%}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...