Flask-输出以仅返回从网页中选择的字段

时间:2018-11-22 09:59:41

标签: python-3.x flask flask-sqlalchemy flask-wtforms

我有一个Flask网站,其中包含用户可以选择的字段列表。

@app.route('/sample', methods=['GET','POST'])
def sample_template():
    form = TemplateForm()
    if form.validate_on_submit():
        student_id = form.student_id.data
        class_id = form.class_id.data
        age_id = form.age_id.data
        status_id = form.status_id.data

        output = sample_function(student_id, class_id, age_id, status_id)

由于上述每个字段都是复选框,因此用户可以选择任何一个字段(全部或所选列表)。我正在尝试修改尝试生成输出的行。

output = sample_function(student_id, class_id, age_id, status_id)

不是固定固定的列,而是如何使它们动态化,以便根据选择的字段,只将那些字段返回到输出中。

例如,如果仅选择了Student_id,class_id,则功能应为

output = sample_function(student_id, class_id)

谢谢

要执行的查询:

cursor.execute('select {} from sales.format(', '.join(str(field) for field in field_names)))

1 个答案:

答案 0 :(得分:0)

您可以遍历这些字段,将它们添加到字典中,并将该字典用作carrier_sample函数的kwargs。但是,您的字段名称应与carrier_sample函数的参数名称相同。

例如:

def sample_function(student_id=None, class_id=None, age_id=None, status_id=None):
    # do logic here
    pass

if form.validate_on_submit():
    kwargs = {}
    for field_name in ['student_id', 'class_id', 'age_id', 'status_id']:
        field = getattr(form, field_name)
        if field.data:
            kwargs[field_name] = field.data
    sample_function(**kwargs)

但是,我不确定这是否是解决您问题的最优雅的解决方案,或者您是否应该更改逻辑设计。