Python 烧瓶WTF表格
我有下面的函数,它只是从数据库中选择数据并将其分配给变量Python 烧瓶WTF表格,python,forms,flask,Python,Forms,Flask,我有下面的函数,它只是从数据库中选择数据并将其分配给变量 @app.route("/tasks") @login_required def tasks(): g.db = connect_db() data = g.db.execute(""" SELECT name, due_date, priority, task_id FROM tasks where status = 1 """) open_task
@app.route("/tasks")
@login_required
def tasks():
g.db = connect_db()
data = g.db.execute("""
SELECT name, due_date, priority, task_id
FROM tasks where status = 1
""")
open_tasks = [dict(name=row[0], due_date=row[1], priority=row[2], task_id=row[3])
for row in data.fetchall()]
data = g.db.execute("""
SELECT name, due_date, priority, task_id
FROM tasks where status = 0
""")
closed_tasks = [dict(name=row[0], due_date=row[1], priority=row[2], task_id=row[3])
for row in data.fetchall()]
g.db.close()
return render_template(
'tasks.html',
form=AddTaskForm(request.form),
open_tasks=open_tasks,
closed_tasks=closed_tasks
)
但我不能理解的是form=AddTaskForm(request.form)
。task.html
已经是一个表单,您可以在这里看到:
<div class="add_task">
<h3>Add a new task</h3>
<form action="{{ url_for('add_task') }}" method="post">
<p>
<label>Task Name: </label>
<input type="text" name="name">
</p>
<p>
<label>Due Date: </label>
<input type="text" name="due_date">
</p>
<p>
<label>Priority</label>
<select name="priority">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
</p>
<p>
<input type="submit" value="Save">
</p>
</form>
</div>
好问题,因为表单及其操作从未在函数/路径/方法中使用。因此,如果您希望在何处使用表单创建任务: 你会:
# Initialization etc.
form = AddTaskForm(request.form)
if form.validate_on_submit():
# Do whatever with the submited data
return render_template("task.html", form=form, ...)
因此,基本上您可以使用相同的方法呈现结果和接受表单数据您所说的
#初始化等是什么意思
和#对提交的数据执行任何操作
。我应该用什么替换它们?初始化:在示例open\u tasks
和closed\u tasks
和form
中为模板设置变量,然后检查表单是否已提交和有效表单。在提交时验证()
如果表单已提交且有效->您可以访问已发布的表单.name.data
等。检查文档。
# Initialization etc.
form = AddTaskForm(request.form)
if form.validate_on_submit():
# Do whatever with the submited data
return render_template("task.html", form=form, ...)