python - 为什么 request.method 没有被调用?
问题描述
我有一个只读文本框,它从数据库中预加载值,单击按钮将其值发送到后端中存在的方法以执行DELETE
sql 查询。当我单击调用方法request.method
但未调用条件的按钮时,会出现问题。它直接进入方法的结束return
语句。
@app.route('/home/delete_reminder/<string:id_val>',methods=['GET','POST'])
@is_logged_in
def delete_reminder(id_val):
if request.method=='POST':
desc = request.form['description']
x = desc.split(',')
cur = mysql.connection.cursor()
cur.execute('DELETE FROM set_reminder WHERE DATE=%s,SUBJECT=%s,DESCRIPTION=%s',[x[0],x[1],x[2]])
cur.execute('DELETE FROM recur WHERE RECUR_NEXT=%s',[id_val])
flash('Reminder Deleted','danger')
mysql.connection.commit()
cur.close()
return redirect(url_for('search_reminder_to_delete'))
这是我的后端代码。
<form method="POST">
{% for data in value %}
<div class="form-group">
<label>Description</label>
<input type="text" name="description" class="form-control" readonly="true" value="{{data.DATE}},{{data.SUBJECT}},{{data.DESCRIPTION}}">
</div>
<a href="/home/delete_reminder/{{data.RECUR_NEXT}}" class="btn btn-warning" name="delete">Delete Reminder</a>
{% endfor %}
</form>
这是html部分。
解决方案
您的按钮不是按钮,而是链接。您没有提交表单。
如果你想这样做,那么你需要让你形成标签:
<form method="POST" action="/home/delete_reminder/{{data.RECUR_NEXT}}">
并将您的按钮切换为提交表单的真实按钮:
<div class="button">
<button type="submit" class="btn btn-warning">Send your message</button>
</div>
编辑:看到您希望基于循环为您的表单提供多个可能的路线。
您可以尝试使用该formaction
属性,尽管并非每个浏览器版本都支持它。
<form method="POST">
{% for data in value %}
<div class="form-group">
<label>Description</label>
<input type="text" name="description" class="form-control" readonly="true" value="{{data.DATE}},{{data.SUBJECT}},{{data.DESCRIPTION}}">
</div>
<div class="button">
<button formaction="/home/delete_reminder/{{data.RECUR_NEXT}}" class="btn btn-warning" type="submit" class="btn btn-warning">Delete Reminder</button>
</div>
{% endfor %}
但是,这仍然会导致description
传递给请求的字段将整个表单中的每个描述都包含在列表中,或者可能只是最后一个作为单个值(我不太记得具有相同的多个输入的行为名称),我认为这不是您所期望的。
老实说,为循环中的每个链接创建一个单独的表单可能是最简单的:
{% for data in value %}
<form method="POST" action="/home/delete_reminder/{{data.RECUR_NEXT}}">
<div class="form-group">
<label>Description</label>
<input type="text" name="description" class="form-control" readonly="true" value="{{data.DATE}},{{data.SUBJECT}},{{data.DESCRIPTION}}">
</div>
<div class="button">
<button class="btn btn-warning" type="submit" class="btn btn-warning">Delete Reminder</button>
</div>
</form>
{% endfor %}
推荐阅读
- javascript - 如何在 Angular 中为表单验证消息保留空间?
- python - 如何在 Python 中过滤特定日期和名称的数据框?
- r - 根据 R 中的 ID 列选择最早日期和最晚日期
- flutter - 流生成器
(脏,状态:_StreamBuilderBaseState >#25d1b) - python - 使用具有多个边界可变的域的函数拟合数据
- makefile - 从 Makefile 在 Questa 中运行测试
- behavior - Akka.Net becomeStacked/UnbecomeStacked 行为问题
- php - 从 SQL DB 创建基于 JSON 模式的数据。一切正常,除非£符号出现在数据中的任何位置?
- java - 使用 chrome 驱动程序进行 Spring Boot Docker 应用程序端到端测试
- json - 将 JSON 数组转换为 CSV