d1s*_*ack 2 python sqlalchemy flask flask-sqlalchemy flask-wtforms
我创建了一个 HTML 表,其中列出了 SQLAlchemy 表中的许多行。该表是使用 jinja2 模板通过循环创建的:
{% for single_merchant in merchants %}
<tr>
<td>{{single_merchant.id}}</td>
<td><button type="button" class="btn btn-sm btn-outline-danger">Delete</button>
</tr>
Run Code Online (Sandbox Code Playgroud)
每行都有一个“删除”按钮。我正在尝试弄清楚如何分配删除按钮来删除该特定的 SQLalchemy 行。我尝试将按钮创建为名为的单独烧瓶形式delete_form,并添加一个id="{{single_merchant.id}}属性,button如下所示:
{% for single_merchant in merchants %}
<tr>
<td>{{single_merchant.id}}</td>
<form method="post">
{{ delete_form.hidden_tag() }}
<td>{{ delete_form.delete(id=single_merchant.id) }}</td>
</form>
</tr>
Run Code Online (Sandbox Code Playgroud)
然后在 app.py 中我创建了一个 if 语句:
if delete_form.validate_on_submit():
print(f"merchant to delete ID - {delete_form.delete.id}")
Run Code Online (Sandbox Code Playgroud)
我希望获得single_merchant.id输出并在 if 语句中使用它从我的 SQLAlchemy 表中删除特定商家,但相反,我得到了输出,merchant to delete ID - delete即使从 HTML 文件中该id属性的值为 1,因为{{single_merchant.id}}1
有没有办法从 HTML 表中执行 SQLAlchemy 行删除?下面是 HTML 表格的大致示例:
实现一个处理删除的路由:
def merch_delete(mid):
merch = Merchant.query.filter_by(id=mid).first()
if merch:
msg_text = 'Merchant %s successfully removed' % str(merch)
cs.delete(merch)
cs.commit()
flash(msg_text)
return redirect(url_for('merchants_view'))
Run Code Online (Sandbox Code Playgroud)
然后,将以下内容添加到 jinja 表中的列中:
<a href="{{ url_for('merch_delete', mid=single_merchant.id) }}"
onclick="return confirm('Do you want to permanently delete merchant {{ merchant }}?');" title="Delete Merchant">
<i class="material-icons" style="font-size:16px">delete</i></a>
Run Code Online (Sandbox Code Playgroud)
图标和Js验证步骤是可选的。
| 归档时间: |
|
| 查看次数: |
2642 次 |
| 最近记录: |