从 HTML/Flask 运行 Python 函数



我一直在用头撞墙来解决这个问题。我正在编写一个应用程序,理想情况下,当HTML中发生onclick时,它会从FLASK运行python脚本。问题是我所做的似乎没有任何工作。我不再收到错误,但程序无法运行。

我尝试通过AJAX访问python脚本,我尝试通过HTML中的jscript调用python脚本,我为python脚本创建了一个单独的文件,而不是通过Flask运行它。

</style>
<h1>Book Roulette</h1>
<h2>Discover Something New</h2>
<h3>Click the image to download a surprise book</h3>
<a href="/static/gut.py"> <button class="button" style="background: url(/static/images/stack.jpg)" onclick="button();" action="/button"></a>
</button>
<script>
$(function() {
$('button').click(function() {
$.ajax({
url: 'static/gut.py',
data: $('form').serialize(),
type: 'POST',
success: function(response) {
console.log(response);
},
error: function(error) {
console.log(error);
}
});
});
});
</script>
</body>
</html>

这是我的 Flask/Python 文档

from flask import Flask, render_template
from gutenberg.acquire import load_etext
from gutenberg.cleanup import strip_headers
import random

app = Flask(__name__, static_url_path='/static')

@app.route('/books')
def books():
return render_template("main.html")

@app.route('/button', methods=["GET", "POST"])
def button():
f = open("GutProject.txt", "w")
for x in range(1):
y = (random.randint(0, 59000))
text = strip_headers(load_etext(y)).strip()
f.write(text)

if __name__ == "__main__":
app.run(debug=True)

我想做的是在我单击我的 HTML 按钮时运行 python 代码,在用户的计算机上生成一个新文件。到目前为止,我已经达到了单击按钮时没有任何反应的地步。

您实际上要在这里实现的是创建一个客户端/服务器项目。你的html是你的客户端或前端,python是你的服务器或后端。使两者通信的方法是通过 api。然后,应事先启动 Flask 应用,而不是从前端调用脚本,而是将请求发送到正确的终结点。假设您在本地计算机上的默认端口上运行 Flask,请尝试在前端将url: 'static/gut.py'替换为以下值:url: 'http://localhost:5000/button'

这应该会在您单击按钮时触发关联的函数。

对于您想要访问的功能,您需要在 Flask 应用程序之外添加第二台服务器。由于POST请求需要由已在运行的 Web 应用程序处理,因此,如果没有第二个服务接收此POST请求,并将 Flask 应用作为子进程运行,则不可能实现目标。

更新:我实际上设法在不使用jquery或PHP的情况下弄清楚了它。

</script>
<a href="/roulette"><input type="button" name="button" class="button" style="background: url(/static/images/stack.jpg)"></input></a>
</body>
</html>

谢谢你们的帮助。

最新更新