在Flask中自定义FieldList视图

时间:2015-11-29 14:55:42

标签: python flask flask-wtforms

我如何实现FieldList视图,以便我可以添加数据行,编辑现有行和删除现有行?这将是另一个模型的添加或编辑表单。我一直在努力阅读现有的文档,但我有点失落。这是一个文本模型:

Name          Location          Phone Number
----------------------------------------------------------------
John Doe      New York          555-123-4567     [Edit] [Delete]
Jane Thomas   New Jersey        555-987-6543     [Edit] [Delete]
Joe Bloggs    Boston            123-456-7890     [Edit] [Delete]
[Add new row]

1 个答案:

答案 0 :(得分:0)

您应该尝试不使用wtforms这样做,因为表单通常表示使用一个提交按钮来更新或添加信息。由于您需要多个功能(因此需要多个提交按钮),因此您必须为每个记录使用多个表单。为了减少事情的复杂性并减少混乱,您应该使用带有按钮的表视图,这些按钮链接到将记录ID作为参数传递的相应视图。 渲染这种模板的一个例子是:
views.py

@app.route('/update_records/')
def update_records():
    data = model.get_all_records() #a list of dictionaries

    if data is None:
        return render_template('message.html', msg="No records exist yet")

    headers = ['Name', 'Location', 'Phone Number'] #use these headers as table headers as well as keys to accessing the dictionaries. This way you won't display the IDs to your users but can still access them for the parameter passing

    return render_template('update_records.html', data=data, headers=headers)

在模板中,您将呈现所有这些记录,并针对每个记录,您将拥有按钮,例如

<button onClick="location.href='{{url_for('.delete_record', id_=row['_id_'], _external=True)}}'"> Delete
    </button>