【发布时间】:2025-11-25 10:50:01
【问题描述】:
我已经使用 python 构建了一个数独求解器,今天我为用户设置了一个网页,以便将数字输入到一个看起来像数独的网格中,然后单击求解。这是通过表单完成的,“解决”是提交按钮。因为数独页面很长,问题也不是页面特有的,所以我在下面放了一些简化的html表单代码作为测试。
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<form id="sudoku" action="Test.py" method="post">
<label for="num-input"> Enter a Number: </label>
<input type="number" name="num-input">
<label for="num-input"> Enter another Number: </label>
<input type="number" name="num-input">
<label for="num-input"> Enter a third Number: </label>
<input type="number" name="num-input">
<button type="submit" name="submit" form="sudoku"> Submit </button>
</form>
</body>
</html>
当表单被提交时,它应该被发送到 Test.py 以便被操作。在网上,我找到了同时使用 CGI 和 Flask 来执行此操作的示例,但两次我都遇到了同样的问题。
改编自Posting html form values to python script的CGI代码:
import cgi
form = cgi.FieldStorage()
numbers = form.getvalue('num-input')
改编自 https://opentechschool.github.io/python-flask/core/form-submission.html 的 Flask 代码:
from flask import request, redirect
@app.route('/Test.py', methods = ['POST'])
def signup():
nums = request.form['num-input']
print(nums)
return redirect('/index.html')
我已经在我的测试表上尝试了这两种解决方案和许多其他解决方案,但我一直遇到一个反复出现的问题。当我单击提交时,浏览器会将我重定向到显示原始 python 代码的页面,而不执行任何代码(或者看起来如此)。形式不应该是问题;我通过简单地将方法属性切换为“get”并检查我被重定向的页面的 url 来验证它正在输出数据。所以问题一定出在浏览器上,或者可能出在python代码上?我在 CGI 或 Flask 方面都不是很有经验,事实上我是一般编码的初学者,但考虑到互联网上用于将 html 表单数据发送到 python 文件的类似解决方案的数量,我假设这是为了是一件很简单的事情。
作为一个附加问题,如果我还没有将 python 代码的输出放在另一个 html 页面中,那么它的输出应该去哪里?
提前感谢您的帮助。
【问题讨论】:
-
你是如何运行这个应用程序的?在浏览器中呈现原始 Python 代码的情况很少见;这表明您使用传统的网络服务器提供
.py文件。您需要安装 python,然后使用pip之类的包管理器安装烧瓶库,然后您可以使用flask run启动开发服务器... -
我在本地主机的 chrome 上运行应用程序。我只是打开 html 测试表单并从那里继续。该页面不是通过 Flask 使用 python 创建的,它是纯 html(实际数独应用程序中的 CSS 和 JavaScript)。我安装了 python,它在终端上运行良好,flask 也是如此。
-
@v25 在下面的答案中详细了解我的问题。