Вызов / вызов функции Javascript из функции python a flask в html - PullRequest
0 голосов
/ 13 апреля 2020

Я создавал приложение flask и пытался вызвать функцию python, в которой я хотел вызвать некоторую функцию / код javascript относительно шаблона HTML, который я возвратил в исходном app.route('/')* 1002. *

Если пользователь что-то сделал, то я вызвал другую функцию, которая должна вызывать или вызывать функцию js, которую я пытался искать везде, но не могу понять смысл решений.

Вот структура моего кода:

@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        #verify if the file is valid
        #here invoke js to do something (for example flash("test"))
    return '''
    <!doctype html>
    <title>Upload new File</title>
    <h1>Upload new File</h1>
    <form method=post enctype=multipart/form-data>
      <input type=file name=file>
      <input type=submit value=Upload>
    </form>
    '''

1 Ответ

1 голос
/ 14 апреля 2020

Вы можете выполнить функцию JavaScript под нагрузкой и проверить функцию на наличие условий. Вы можете повлиять на результат этой проверки, изменив условие с помощью Python. Если вы используете функцию render_template для Flask, вам не нужно писать код HTML в файле Python. Для лучшей читабельности я использую эту функциональность, но вы всегда можете вставить код HTML в свой код Python, как вы делали раньше.

Ваш шаблон HTML, например, с именем upload.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Upload new File</title>
</head>
<body onload="flashMessage()">
  <script>
    function flashMessage() {
      if ("{{ flash_message }}" == "True") {
        alert("[YOUR_MESSAGE_HERE]");
      }
    }
  </script>

  <h1>Upload new File</h1>
  <form method=post enctype=multipart/form-data>
    <input type=file name=file>
    <input type=submit value=Upload>
  </form>
</body>
</html>

Ваш Python код:

from flask import Flask, render_template

app = Flask(__name__)


@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        #verify if the file is valid
        #here invoke js to do something (for example flash("test"))
        return render_template('upload.html', flash_message="True")

    return render_template('upload.html', flash_message="False")

Итак, строка условия в вашем файле HTML будет преобразована в

if ("True" == "True")

или

if ("False" == "True")

в зависимости от того, хотите вы показать сообщение fla sh или нет.

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