Python 如何从Flask中作为变量输入的表单数据?
我正在开发一个简单的UI,通过ID启动和停止游戏。我编写的基本HTML如下(Python 如何从Flask中作为变量输入的表单数据?,python,html,flask,routes,Python,Html,Flask,Routes,我正在开发一个简单的UI,通过ID启动和停止游戏。我编写的基本HTML如下(game\u ID由JS填充): 游戏ID: 看起来像 我还为每个表单定义了烧瓶路由函数: @app.route("/start_game/<game_id>") def start_game(game_id): # ... @app.route("/end_game/<game_id>") def end_game(game_id): # ... @app.route(
game\u ID
由JS填充):
游戏ID:
看起来像
我还为每个表单定义了烧瓶路由函数:
@app.route("/start_game/<game_id>")
def start_game(game_id):
# ...
@app.route("/end_game/<game_id>")
def end_game(game_id):
# ...
@app.route(“/start\u game/”)
def开始游戏(游戏id):
# ...
@应用程序路径(“/end\u game/”)
def结束游戏(游戏id):
# ...
在我的表单中,如何使游戏id
对应于游戏id
中的游戏id
目前,当我提交开始和结束游戏时,我收到一个文件未找到错误,因为它只是将文本
附加到路线上
我是网络开发新手。这应该是微不足道的,但我不知道该搜索什么。对于这样一个简单的问题,请先表示歉意。您正在尝试根据用户输入生成url,但当Jinja在服务器端呈现模板时,用户输入不可用,它仅在客户端可用。因此,如果您想使用游戏id作为URL参数发布到URL,则必须使用JavaScript在客户端构建该URL 对于你想做的事情,这并不是真的必要。您可以使用
request.form['name']
获取命名输入的提交值。按钮与任何其他输入一样,因此您可以对其进行命名,以了解所采取的操作
@app.route('/manage_game', methods=['POST'])
def manage_game():
start = request.form['action'] == 'Start'
game_id = request.form['game_id']
if start:
start_game(game_id)
else:
stop_game(game_id)
return redirect(url_for('index'))
甚至比你需要的还要详细。如果你知道游戏是否已经在进行中,只需切换当前状态,而不是选择动作。启动一个已经启动的游戏是没有意义的,只需停止它。您正试图根据用户输入生成url,但当Jinja在服务器端呈现模板时,用户输入不可用,它仅在客户端可用。因此,如果您想使用游戏id作为URL参数发布到URL,则必须使用JavaScript在客户端构建该URL 对于你想做的事情,这并不是真的必要。您可以使用
request.form['name']
获取命名输入的提交值。按钮与任何其他输入一样,因此您可以对其进行命名,以了解所采取的操作
@app.route('/manage_game', methods=['POST'])
def manage_game():
start = request.form['action'] == 'Start'
game_id = request.form['game_id']
if start:
start_game(game_id)
else:
stop_game(game_id)
return redirect(url_for('index'))
甚至比你需要的还要详细。如果你知道游戏是否已经在进行中,只需切换当前状态,而不是选择动作。启动一个已经启动的游戏是没有意义的,只需停止它。我不能评论,但我想更正davidism的代码。 我相信,您需要在表单元素中使用一个与服务器python代码中的函数对应的值来执行操作。轻微的,但重要的纠正。所以它是这样的: 在server.py中:
@app.route('/manage_game', methods=['POST'])
def manage_game():
start = request.form['action'] == 'Start'
game_id = request.form['game_id']
if start:
start_game(game_id)
else:
stop_game(game_id)
return redirect(url_for('index'))
在HTML中:
<form method="POST" action=/manage_game>
<input type="text" name="game_id"/>
<input type="submit" name="action" value="Start"/>
<input type="submit" name="action" value="Stop"/>
</form>
我无法发表评论,但我想更正davidism的代码。 我相信,您需要在表单元素中使用一个与服务器python代码中的函数对应的值来执行操作。轻微的,但重要的纠正。所以它是这样的: 在server.py中:
@app.route('/manage_game', methods=['POST'])
def manage_game():
start = request.form['action'] == 'Start'
game_id = request.form['game_id']
if start:
start_game(game_id)
else:
stop_game(game_id)
return redirect(url_for('index'))
在HTML中:
<form method="POST" action=/manage_game>
<input type="text" name="game_id"/>
<input type="submit" name="action" value="Start"/>
<input type="submit" name="action" value="Stop"/>
</form>
@erip,只是澄清一下,“game\u id”值实际上是通过表单上方的HTML代码传递给表单元素的,但通过代码中其他地方的JS定义的,可以是HTML头文件或其他单独的文件。从这里开始:Game ID:To:you使用了输入元素的名称。game_id传递val.@erip,只是澄清一下,“game_id”值实际上是通过表单上方的HTML代码传递给表单元素的,但是通过代码中其他地方的JS定义的,可以是HTML头文件或其他单独的文件。从这里开始:Game ID:To:you使用了输入元素的名称。游戏id要通过val。