flask - Flask:从数据库内容动态填充表单

标签 flask flask-sqlalchemy flask-wtforms

基本上,我想做一些非常简单的事情:我想创建一个用于删除数据库中条目的表单。

模板正在创建一个包含所有条目的html表,没有任何麻烦。我现在的问题是:如何将其转换为每行都有链接的表单。

当然,我可以通过链接手动编写html代码。但是,还有一种“淡淡的”方式吗?我已经在使用wtforms和sqlalchemy

我的路线:

@app.route('/admin', methods=['GET', 'POST'])
@htpasswd.required
def admin(user):
    orders = Order.query.all()

    return render_template(
        'admin.html', title="AdminPanel", orders=orders
    )


该模型:

class Order(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), index=True, unique=True)


模板:

{% for order in orders %}
            <tr>
                <td>{{order.email}}</td> 
                <td><a href="{{ url_for('admin',order_id=order.id, action='delete') }}"><i class="fa fa-trash" aria-hidden="true"></i></a></td>
            </tr>
 {% endfor %}

最佳答案

您应该使用另一种删除路径,而不是用来渲染模板的路径。同样,您不需要表格来执行删除任务。您可以为此使用get参数,并像尝试过的那样使用链接

将此添加到您的路线:

from flask import redirect, url_for
from app import db # you should import your db or db session instance so you can commit the deletion change this line to wherever your db or db session instance is


@app.route('/delete/<order_id>', methods=['GET', 'POST'])
@htpasswd.required
def delete(order_id):
    orders = Order.query.filter(Order.id == order_id).delete()
    db.commit()
    return redirect(url_for('admin'))


基本上,您将执行删除,然后使用上面的代码重定向回管理路由

您的模板文件应更改为:

{% for order in orders %}
            <tr>
                <td>{{order.email}}</td> 
                <td><a href="{{ url_for('delete',order_id=order.id) }}"><i class="fa fa-trash" aria-hidden="true"></i></a></td>
            </tr>
 {% endfor %}

关于flask - Flask:从数据库内容动态填充表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51954928/

相关文章:

python - 运行 Flask 应用程序时出现内部服务器错误

Python Flask WTForms FloatField 允许 1,0 和 1.0 允许逗号和点

python - 如何使用远程主机运行 flask 和 mongoengine?

python - 改变 flask.flash 信息的颜色

python - 如何在数据库关系中直接引用表列?

python - 使用 Flask-SQLAlchemy 中的存储过程调用将 POST 方法发送到 SQL

python - 为什么我无法获取数据库lastrowid?

python - Flask sqlalchemy 多对多插入数据

python - wtforms TextField/SearchField,具有 flask 应用程序的自动完成功能(类似于谷歌搜索栏)

python - Flask-WTF 表单的单元测试验证