Использование dict в качестве аргументов проверки RequestParser - PullRequest
1 голос
/ 28 октября 2019

Я задавался вопросом, есть ли способ передать dict аргументам команды RequestParser .add_argument ()

обычно это работает так

    my_parser = reqparse.RequestParser()
    my_parser.add_argument('my_field', type=dict, help='my_field must be a dict', required=True)

Для повторного использования кодаВ целях, я хотел бы использовать это примерно так:

    my_arguments = {type=dict, help='my_field must be a dict', required=True}

, а затем передать их в качестве аргументов функции .add_argument, используя:

    my_parser.add_argument('my_field', my_arguments)

Я застрял, пытаясь сделать этоиспользуя понимание списка,

    my_parser.add_arguments('my_field', list(key=value for (key, value) in parser_arguments.items()))

, когда я понял, что, вероятно, не могу использовать dict, возможно, потребуется выполнить getattr () и явно уделить этому слишком много времени. Это кажется возможным и элегантным для меня, но я все равно не могу найти решение, благодарен за любые поучительные идеи по этому вопросу.

Редактировать: я не могу использовать интуитивный

    my_parser.add_argument('my_field', my_arguments)

потому что dict будет добавлен в поле «default» аргумента синтаксического анализатора, а фактические поля («type», «help» и «required») не будут затронуты.

1 Ответ

0 голосов
/ 28 октября 2019

Вы можете использовать распаковку kwargs :

my_arguments = {'type':dict, 'help':'my_field must be a dict', 'required':True}
my_parser.add_argument('my_field', **my_dict)

Что эквивалентно

my_parser.add_argument('my_field', type=dict, help='my_field must be a dict', required=True)
...