Flask:从数据库内容动态填充表单
Flask: dynamically populated form from databse content
基本上我想做一些非常简单的事情:我想创建一个表单来删除数据库中的条目。
模板正在创建一个包含所有条目的 html table,没有任何问题。我现在的问题是:如何将其转换为每行带有 link 的形式。
当然,我可以使用 link 手动编写 html 代码。但是有更多的"flaskish"方式吗?我已经在使用 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 %}
您应该使用不同的删除路径,而不是用于呈现模板的路径。此外,您不需要用于删除任务的表格。您可以为此使用获取参数和链接,就像您尝试过的那样
将此添加到您的路线中:
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 %}
基本上我想做一些非常简单的事情:我想创建一个表单来删除数据库中的条目。
模板正在创建一个包含所有条目的 html table,没有任何问题。我现在的问题是:如何将其转换为每行带有 link 的形式。
当然,我可以使用 link 手动编写 html 代码。但是有更多的"flaskish"方式吗?我已经在使用 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 %}
您应该使用不同的删除路径,而不是用于呈现模板的路径。此外,您不需要用于删除任务的表格。您可以为此使用获取参数和链接,就像您尝试过的那样
将此添加到您的路线中:
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 %}