Python Flask: возврат содержимого HTML - PullRequest
0 голосов
/ 18 мая 2018

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

, рассмотрите следующий фрагмент из моего html-файла:

<tr><td>
    <button id="socks.shirt.pants"> dummy text here </button>
</td></tr>

моя цель, как я могу выразиться, состоит в том, чтобы нажатьКНОПКУ и вернуть текст строки в атрибуте ID в Python, используя Flask.Ниже приведен код, с которым я работаю.

app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
    #display html file
    return send_from_directory('','myfile.html')
    #this is the part that needs help
    textdata = request.htmlcontent.td.id

Я пробовал несколько разных способов извлечь содержимое HTML.включая, но не ограничиваясь:

request.html.tr.id,
request.get_data(),
request.data(),
request.form,

Теперь я понимаю, что request.form возвращает предоставленную пользователем информацию, представленную в форме, которая не будет работать для меня, потому что информация, которую я хочу получить, будет жестко закодирована вHTML-файл под любым тегом, который позволит этому процессу работать.(в настоящее время tr -> td -> button).другие методы либо вернули None, либо пустую строку, я полагаю.

также, мне интересно, может быть, есть какой-то фрагмент кода javascript, который также нужно использовать в дополнение к Flask?Я надеюсь, что это нереальное ожидание, чтобы задать этот вопрос!любые предложения очень помогли бы!

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете использовать ajax с jquery:

В основной filename.py включить маршрут, подобный этому, который получает доступ к параметрам из ответа json из внешнего интерфейса.Кроме того, укажите маршрут, который будет отображать шаблон HTML:

@app.route('/recieve_data')
def get_id():
  the_id = flask.request.args.get('button_id')
  return "<p>Got it!</p>"

@app.route('/', methods=['GET', 'POST'])
def home():
  return flask.render_template('filename.html')

В своем HTML (хранящемся в filename.html) используйте следующий код:

<html>
  <head>
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  </head>
  <body>
    <tr><td>
     <button id="socks.shirt.pants" type='button'> dummy text here</button>
     <div id='response'></div>
    </td></tr>
  </body>
  <script>
   $(document).read(function() {
      $("button").click(function(event){
         var the_id = event.target.id;
         $.ajax({
            url: "/recieve_data",
            type: "get",
            data: {button_id: the_id},
           success: function(response) {
           $("#response").html(response);
         },
          error: function(xhr) {
        //Do Something to handle error
        }
       });
     });
   });
  </script>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...