gpt4 book ai didi

python - 在 Flask 中使用 html 运行 python 脚本

转载 作者:太空狗 更新时间:2023-10-30 02:41:02 25 4
gpt4 key购买 nike

我是 Flask 的新手,我正在尝试通过单击 html 页面中的按钮从后台运行 python 脚本。这是我的代码:

from flask import *
from functools import wraps
import sqlite3

app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')

@app.route('/generate')
def generate():
return render_template('process.html')

我的process.html如下:

<html>
<head>
<body>
Processing...
<script>
exec('python /pth to my python file/myfile.py')
</script>
</body>
</head>
</html>

和home.html如下:

{% extends "template.html" %}
{% block content %}
<div class = "jumbo">
<h2> Home</h2>
<br/>
<p><a href="{{ url_for('generate') }}">click me</a></p>
<p> lorem epsum </p>
<div>
{% endblock %}

我在 linux 上工作,我不知道是否可以在 html 中使用 exec,如上所示。但是 .html 文件中的 exec 命令没有执行。我对 Flask 还是个新手,我会很感激任何关于如何让它工作的建议。

最佳答案

<script> HTML 中的标签专门用于运行客户端 JavaScript 代码。后端逻辑应该在 View 中完成。如果您只是想执行 myfile.py 中存在的一行代码, 你应该把它放在那个文件的一个函数中并使用 from myfile import functionname 导入它或者只是在 View 中显示该代码(在大多数情况下,后者是正确的方法)。例如,如果 myfile.py包含print 'Hello World!'那么你的观点应该是这样的:

from flask import *
from functools import wraps
import sqlite3

app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')

@app.route('/generate')
def generate():
print 'Hello World!'
return render_template('process.html')

如果您这样做,就不必将所有代码拆分到单独的文件中。不幸的是,模板将在代码执行后呈现,因此“正在处理...”,如您的 process.html 所示。模板将在处理后显示。就 Flask 而言,据我所知,向用户展示该过程已发生的最佳方式是重定向回页面并显示一条消息,如下所示:

@app.route('/generate')
def generate():
print 'Hello World!'
flash('Process complete!')
return redirect(url_for(home))

然后在home.html你会有这样的东西(来自 Flask 0.11 Documentation ):

{% extends "template.html" %}
{% block content %}
<div class = "jumbo">
<h2> Home</h2>
<br/>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class=flashes>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<p><a href="{{ url_for('generate') }}">click me</a></p>
<p> lorem epsum </p>
<div>
{% endblock %}

如果您希望在页面上显示“正在处理...”之类的内容,那么您就需要使用 JavaScript。

希望这对您有所帮助:)

关于python - 在 Flask 中使用 html 运行 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40895329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com