Отображение результата на той же странице с помощью колбы Python - PullRequest
0 голосов
/ 08 июля 2019

Я использую флягу Python для отправки данных формы в другой HTML-шаблон.Мне нужно показать результат на той же странице, где существует форма ввода HTML.В настоящее время ответ пересылается на следующую страницу.

Я пытался запустить через JQuery, но все еще не смог получить результат.

app.py

from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/')
def student():
   return render_template('index.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)

index.html

<html>
   <body>
      <form action = "http://localhost:5000/result" method = "POST">
         <p>Name <input type = "text" name = "Name" /></p>
         <p>Physics <input type = "text" name = "Physics" /></p>
         <p>Chemistry <input type = "text" name = "chemistry" /></p>
         <p>Maths <input type ="text" name = "Mathematics" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>
   <div>
   </div>
    </body>
</html>

Result.html

<!doctype html>
<html>
   <body>
      <table border = 1>
         {% for key, value in result.items() %}
            <tr>
               <th> {{ key }} </th>
               <td> {{ value }} </td>
            </tr>
         {% endfor %}
      </table>
   </body>
</html>

Теперь результат отображается в result.html, мне нужно, чтобы он отображался в index.html.Пожалуйста, предложите, как это сделать.

1 Ответ

0 голосов
/ 08 июля 2019

Если я правильно понимаю вашу проблему, я вижу несколько способов:

1)
Вы можете включить свой result.html в свой index.html.
Затем вы просто передаете свои результаты в функцию render_template.
Подробнее о шаблонах здесь

это будет выглядеть примерно так:

{% include 'result.html' %}

в index.html
и result.html будут выглядеть следующим образом:

<div id="result_div">
  some code
</div>

2)
Вы можете использовать AJAX для публикации данных формы, генерацииhtml во фляге, передайте его как результат AJAX и обновите свою страницу им с помощью javascript.

$.ajax({
                        type: 'POST',
                        url: '/result',
                        data: JSON.stringify({
                            'data' : data,
                        }),
                        contentType: 'application/json;charset=UTF-8',
                        success: function(response){
                            // fill with html
                            $('#result_div').html(response.result);

                        },
                        error: function(error) {
                            // console.log(error);
                        }
                    });

Конечно, вам также придется обновить код фляги на /results.

Вв обоих случаях вам нужна одна страница (которая может состоять из нескольких html-файлов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...