Функция Flask получила несколько значений для аргумента - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть этот код Python:

@reports_api.route('/reports/xlsx/organisations/<int:organisation_id>/', methods=['GET'])
@reconnect_to_db
@check_permissions(request, employee_constraints={}, client_user_constraints={}, in_args=True)
def get_organisation_containers_report_xlsx(organisation_id, employee_id):
    if request.method == 'GET':
        recipient = request.args.get('recipient')
        report_str_io = ExcelReportsManager.get_organisation_containers_report(organisation_id, employee_id, recipient == 'up')
    return flask.jsonify(**report_str_io), 200

Когда я использую маршрут к этому API, я получаю ошибку

TypeError: get_organisation_containers_report_xlsx() got multiple values for argument 'organisation_id'

Существует путь, который ведет к API:

http://localhost:5000/reports/xlsx/organisations/1/?employee_id=2

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Ошибка была в аргументах функции.Нужно использовать request.args.get('employee_id').

И код будет таким:

@reports_api.route('/reports/xlsx/organisations/<int:organisation_id>/', methods=['GET'])
@reconnect_to_db
@check_permissions(request, employee_constraints={}, client_user_constraints={}, in_args=True)
def get_organisation_containers_report_xlsx(organisation_id):
if request.method == 'GET':
    recipient = request.args.get('recipient')
    report_str_io = ExcelReportsManager.get_organisation_containers_report(organisation_id, request.args.get('employee_id'), recipient == 'up')
return flask.jsonify(**report_str_io), 200

Это работает, когда мы отправляем аргументы в пути к API, как это:

http://localhost:5000/reports/xlsx/organisations/1/?employee_id=2
0 голосов
/ 19 ноября 2018

Я думаю, что первый аргумент - path в методах колбы route, добавьте path к сигнатуре функции в качестве первого аргумента и проверьте, исправила ли она это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...