Ошибка применения декоратора
В роутингах постоянно прописывал:
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
Что не так сделал?
Источник: Stack Overflow на русском