【发布时间】:2017-04-22 22:20:09
【问题描述】:
我发现了很多类似的东西,但我就是不能让它发挥作用。基本上,我有一个按钮,按下它后,我想将该值返回到我的烧瓶后端。
HTML 按钮:
<form action="" method="POST" ><button class="btn btn-danger" type="submit" name="delete" value="{{ item2 }}"><span class="glyphicon glyphicon-trash"></span> Delete</button> </form>
Python:
@app.route('/', methods=["GET","POST"])
def home():
if request.method == 'POST':
if request.form['delete'] == post_id:
(my sql login/cursor stuff....)
sql = "DELETE FROM test_table WHERE post_id = ?"
c.execute(sql, (post_id,))
return redirect("/")
如您所见,我正在使用 jinja 填充链接(和后续变量)。它按应有的方式填充了按钮,但是将其发送回我的 python 脚本不起作用。
更新: 当我运行它时,我得到一个内部服务器错误。我看不到路由错误是什么,因为我无法进行调试(使用 wsgi/werkzeug)。
我认为我们可以肯定地说,不定义 post id 是它不起作用的原因。所以我的问题是,当按钮将数据发送回 python 时,python 获取什么值(以及如何获取)?是name= 还是value= 还是别的什么?
【问题讨论】:
-
你能告诉我们更多关于什么不起作用的信息吗?我使用您的代码在现有 Flask 应用程序中创建了一个简单视图,它通过了
request_method == 'POST'的测试,并将我重定向回/url。显然我删除了 mysql 的东西,并测试了post_id值 - 但我可以测试的部分似乎运行正常(包括按钮输入的 value 属性)。 -
当我单击按钮时,我收到错误:内部服务器错误服务器遇到内部错误,无法完成您的请求。要么服务器超载,要么应用程序出错。
-
Marc,“内部服务器错误”可能表示路由中存在一些编程错误。如果您以交互方式运行应用程序,您可能可以获得回溯。正如大卫所提到的,你没有定义
post_id——这可能是票。请使用任何回溯或错误消息更新您的问题。app.debug=True也可能有帮助。 -
"你没有定义
post_id" 这绝对是问题所在。我不确定如何从按钮中获取该值。我会从name=字段或value=字段中提取它吗?就调试而言,我正在使用 wsgi,但无法让它与 werkzeug 一起使用。谢谢你对我的包容。我还是 Flask/Python 的新手。 -
不错!现在我明白了。 'for kicks' 的建议正是我所希望的——返回了号码。现在我可以把它传下去了。