Ошибка применения декоратора

Рейтинг: 1Ответов: 0Опубликовано: 28.02.2023

В роутингах постоянно прописывал:

print('--- NAME_ROUTING ---')
print_request(request)

где:

  • NAME_ROUTING - это имя ротинга (его вписывал постоянно сам)
  • print_request - это печать того, что пришло в request (все POST, GET, JSON и т.д.)

Решил закинуть это в декоратор:

def print_information(func):
    def wraper(*args, **kwargs):
        print('<--| ' + func.__name__ + ' |-->')
        print_request(request)
        return func(*args, **kwargs)
    return wraper

Кинул его перед первым роутингом:

@app.route('/sample_router')
@print_information
def sample_router():
    return jsonify({
        'response': 'my super response'
    })

В итоге, сделал запрос и все отработало: напечаталось имя sample_router

Но, если создать 2ой роутер и кинуть туда декоратор:

@app.route('/sample_router')
@print_information
def sample_router():
    return jsonify({
        'response': 'my super response'
    })

@app.route('/sample_router2')
@print_information
def sample_router2():
    return jsonify({
        'response2': 'my super response2'
    })

Вылетит ошибка:

raise AssertionError( AssertionError: View function mapping is overwriting an existing endpoint function: wraper

Что не так сделал?

Ответы

Ответов пока нет.