Как запустить скрипт python, нажав кнопку на веб-странице HTML? - PullRequest
0 голосов
/ 16 марта 2020

В настоящее время у меня есть сценарий python, который обновляет определенные файлы CSV при запуске (он очищает и обновляет информацию о файле CSV). На моей странице HTML (index. html) внутри индекса есть тег script. html, который читает файл CSV и отображает его в виде таблицы на веб-странице. Однако теперь мне нужно обновить файл CSV, нажав кнопку HTML на веб-странице. Это обновит файл CSV, поэтому при запуске кнопки для запуска сценария JS он будет иметь обновленные значения из файла.

Я искал и обнаружил, что очень трудно понять, что они имели в виду, используя flask и Django (я ничего не знаю о настройке серверов). Я не хочу настраивать веб-страницу Django, потому что я хочу работать с моей текущей чистой HTML веб-страницей, которую я написал.

Буду признателен, если ответ будет соответствовать текущему стандарту решения для запуска python скриптов в HTML.

Пожалуйста, спросите, нужна ли вам дополнительная информация. Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 марта 2020

Вам необходимо настроить веб-сервер. Flask может использоваться для этой цели. Таким образом, вы можете создать следующий скрипт:

from datetime import datetime
from flask import Flask, redirect, request
app = Flask(__name__)

@app.route('/')
def index():
    with open('index.html') as fh:
        return fh.read()

@app.route('/update')
def update_file():
    with open('data.txt', 'w') as fh:
        fh.write(datetime.now().strftime('%H:%M:%S'))
    return redirect(request.referrer)

@app.route('/') предоставляет вашу целевую страницу, которая хранится в index.html:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Example</title>
</head>

<body>
  <form action="/update">
    <input type="submit">
  </form>
</body>
</html>

Эта страница HTML содержит отправку кнопка, которая относится к /update. В приведенном выше сценарии веб-сервера этот маршрут зарегистрирован с помощью функции update_file. Здесь вы можете реализовать свою логику c, чтобы реагировать на нажатие кнопки (в примере она записывает текущее время в data.txt на сервере ). Поскольку скрипт работает на сервере, а ваш браузер работает на клиенте, он работает только в том случае, если на самом деле это один и тот же компьютер, т.е. если вы используете его локально в качестве интерфейса для своих программ. Если вы хотите разделить сервер и клиент, вам нужно ввести способ передачи данных.

Теперь вы можете запустить веб-сервер следующим образом:

$ FLASK_APP=script.py flask run
[...]
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Теперь вы можете перемещаться на адрес, указанный выше, и вы будете на целевой странице. Нажатие на кнопку обновляет файл:

$ tree .
.
├── data.txt    <-- This file gets updated.
├── index.html
├── __pycache__
│   └── script.cpython-38.pyc
└── script.py
0 голосов
/ 16 марта 2020

Вы не можете запустить python в html. Вы можете просто использовать javascript. но вы можете передать информацию как json и затем использовать javascript, если вы не хотите менять язык или использовать python frameworks.

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