Flask - выводить только те поля, которые выбраны на веб-странице. - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть веб-сайт 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 голосов
/ 22 ноября 2018

Вы можете зациклить поля, добавить их в словарь и использовать этот словарь в качестве kwargs для функции carrier_sample.Однако имена ваших полей должны иметь то же имя, что и аргументы для функции 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)

Однако я не уверен, будет ли это наиболееэлегантное решение для вашей проблемы или если вы должны изменить дизайн кусок логики.

...