Вызов функции Javascript из flask / python

1

Я знаю Python очень хорошо, но я новичок в веб-материалах и JavaScript. Я нашел сообщение о вызове функции python из кнопки на веб-сайте (Flask).

Я хочу сделать следующее: я хочу добавить новую строку в таблицу HTML. Данные будут поступать из Python. Я уже выяснил, что обновление сайта не является хорошим способом сделать это, вместо этого, похоже, JavaScript следует использовать. Скажем, у меня есть следующий код HTML:

<table class="table" id="myTable">
  <thead>
    <tr>
      <th colspan="2">This is a table</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>entry 1</td>
      <td>entry 2</td>
    </tr>
  </tbody>
</table>
<script src="js/scripts.js"></script>

и в scripts.js у меня есть следующая функция (из связанного сообщения):

function appendRow(table_id) {
  var table_ref = document.getElementById(table_id).getElementsByTagName('tbody')[0];
  var new_row = table_ref.insertRow(table_ref.rows.length);
  var new_cell = new_row.insertCell(0);
  var new_text = document.createTextNode('New row');
  new_cell.appendChild(new_text);
}

Теперь, не обращая внимания на детали, как работает функция/что можно оптимизировать и т.д., Мой реальный вопрос: как я могу вызвать эту функцию из Python/flask?

Дополнительно: как я могу передать данные (например, JSON-структуру) функции JavaScript?

Спасибо заранее!

  • 0
    Связанные / дубликаты - stackoverflow.com/questions/298772/…
  • 0
    В Интернете есть много учебников и статей о том, как работает Ajax. Это не совсем то, что можно объяснить несколькими предложениями. Для простых вещей, как это, вы бы использовали функцию обратного вызова. Таким образом, вы почти можете думать об этом как о передаче функции в данные вместо передачи данных в функцию.
Теги:
flask

1 ответ

0

См. Эту ссылку, которую вы можете использовать ajax для загрузки таблицы без обновления страницы.

вы можете использовать flask jsonify для возврата json из вашего флеш-приложения. См. Эту ссылку и ниже пример из фляги doc

from flask import jsonify
@app.route('/_get_current_user')
def get_current_user():
    return jsonify(username=g.user.username,
                   email=g.user.email,
                   id=g.user.id)

вернет следующий json

{
    "username": "admin",
    "email": "admin@localhost",
    "id": 42
}
  • 0
    Вы также можете использовать веб-сокеты, если хотите иметь возможность помещать новые данные на уже открытые страницы, не зная, когда они будут отправлены.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню