我有一个名为test.py
的Python脚本,其中包含许多函数和循环,可以输出一些原始数据,我正在尝试从网页运行它。
作为第一步,我在下面使用 flask 准备了一个非常简单的代码,以查看我的脚本是否有效。
我希望在网页上呈现输出(一些原始数据(,但似乎它对我不起作用,也许我没有一个好的开始。
简而言之,我需要的是输入我的服务器地址并查看脚本的输出。
是的,如果一切顺利,我也会开发它以获取输入数据。
from flask import Flask, redirect, url_for, request
import test
app = Flask(__name__)
@app.route('/')
def dynamic_page():
return test()
if __name__ == '__main__':
app.run(debug=True)
Berk,Flask 的路由需要某些类型的响应(字符串、元组、响应实例等(您可以在此处阅读有关它们的信息。我猜你的测试函数不会返回任何这些必需的类型。您可以做的是 json 序列化 test
函数的结果并将其作为 Flask 响应返回,如果这是不可能的(由于test
返回的值类型(,则只需将其打印到控制台即可。这样,您仍然可以确定函数调用有效。查看下面的代码:
from flask import Flask, redirect, url_for, request
import test
# Also import json
import json
app = Flask(__name__)
@app.route('/')
def dynamic_page():
resp = test()
try:
resp = json.dumps(resp)
except:
print(resp)
return "Function executed. Check your terminal"
else:
return resp
if __name__ == '__main__':
app.run(debug=True)
test
到底是做什么的?
看起来你在用户访问路由时尝试调用模块,相反,你应该调用一个函数。
如果要在用户访问 Flask 路由时执行特定函数,可以这样做:
import test
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return test.my_function_here()
if __name == '__main__':
app.run(debug=True)
我所知,你想从浏览器中调用Python。
如果是这种情况,您只需向路由发送 Ajax GET
请求,该函数就会运行。
$.ajax({
url: "/root/example/route/",
method: "GET",
success: () => console.log(`Python response: ${response}`)
});
然后添加以下路由函数:
@app.route("/root/example/route/", methods = ["GET"])
def example_route():
print("This was called from the browser!")
return "All finished here!"
当你在浏览器中运行JavaScript时,Ajax会向Flask路由发送一个GET
请求,该路由输出:
This was called from the browser!
在您的终端中,它将发送:
All finished here!
到浏览器,JavaScript 会将其记录到控制台。
注意:我假设你正在使用jQuery,如果不签出 youmightnotneedjquery.com。
祝你好运。