Сделать маршрут доступным только в режиме отладки с помощью flask

#python #flask

#python #flask

Вопрос:

У меня есть куча маршрутов, которые я хочу, чтобы они были доступны только в режиме отладки. Есть ли декоратор или что-то, что позволяет мне это делать, или я должен полностью комментировать / удалять код? Пример:

 @debug_only
@app.route("/send_data/<data>", methods=["GET", "POST"])
def send_data(data):
    return jsonfy("{'data': data}")
 

Ответ №1:

Flask не предоставляет для этого никакого встроенного декоратора. Напишите декоратор, который проверяет current_app.debug и возвращает 404, если он не находится в режиме отладки.

 from functools import wraps
from flask import current_app, abort

def debug_only(f):
    @wraps(f)
    def wrapped(**kwargs):
        if not current_app.debug:
            abort(404)

        return f(**kwargs)

    return wrapped

@app.route("/debug")
@debug_only
def debug_info():
    ...