English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Обработка форм Flask

Мы видели, что можно указать http метод в правилах URL. Функция, которая принимает URL-мappings, может собирать данные из формы в виде объекта словаря и передавать их шаблону для отображения на соответствующей странице.

В следующем примере, URL => / показывает веб-страницу с формой ( student.html) данные, заполненные в этом примере, будут отправлены на URL => /result, который запускает функцию result().

Функция results() собирает данные из формы, которые существуют в request.form, и отправляет их в result.html и показывает её.

Этот шаблон динамически отображает таблицу HTML с данными формы.

Ниже приведен код приложения на Python -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ru.oldtoolbag.com
# Date : 2020-08-08
from flask import Flask, render_template, request
 app = Flask(__name__)
 @app.route('/')
 def student():
     return render_template('student.html')
 @app.route('/result', methods=['POST', 'GET'])
 def result():
     if request.method == 'POST':
         result = request.form
         return render_template("result.html", result=result)
 if __name__ == '__main__':
     app.run(debug=True)

Ниже приведено: student.html код HTML скрипта.

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ru.oldtoolbag.com
# Date : 2020-08-08
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Пример Flask</title>
 </head>
    <body>
       <form action="http://localhost:5000/result" method="POST">
          <p>Имя <input type="text" name="Name" /></p>
          <p>Физический балл: <input type="text" name="Physics" /></p>
          <p>Химический балл: <input type="text" name="Chemistry" /></p>
          <p>Математический балл: <input type="text" name="Mathematics" /></p>
          <p><input type = "submit" value = "Подтвердить" /></p>
       </form>
    </body>
 </html>

Код шаблона (result.html) приведен ниже -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ru.oldtoolbag.com
# Date : 2020-08-08
<html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Пример Flask</title>
 </head>
    <body>
       <table border = 1>
          {% for key, value in result.items() %}
             <tr>
                <th> {{ key }} </th>
                <td> {{ value }} </td>
             </tr>
          {% endfor %}
       </table>
    </body>
 </html>

Запустить скрипт Python и ввести URL в браузере => http://localhost:5000/ . Результат показан ниже -

Когда нажимается ПодтвердитьКогда нажимается кнопка, данные формы представлены в виде HTML-таблицы result.html Как показано ниже -