我有一个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)))
答案 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)
但是,我不确定这是否是解决您问题的最优雅的解决方案,或者您是否应该更改逻辑设计。