如何通过网页运行 Python 脚本



我有一个名为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。

祝你好运。

最新更新