У меня есть код, как этотВозвращение ответа в термосе
def find_user(user_id):
if not users.lookup(user_id):
return jsonify(success=False, reason="not found")
else:
return users.lookup(user_id)
@app.route(...)
def view1(...):
user = find_user(...)
if user:
do_something
return jsonify(success=True, ....)
Дело в том, у меня есть вспомогательные функции, и если condition
удовлетворяется я хочу, чтобы вернуть ответ сразу. В этом случае, если пользователь не найден, я хочу вернуть запрос с сообщением об ошибке и указать причину.
Проблема заключается в том, что функция также может возвращать некоторые другие значения (например, пользовательский объект). Я не вернусь с просьбы. Вместо этого, поскольку мы получили задание, мы продолжим остаток кода.
Я, вероятно, могу проверить тип, но это уродливо!
В идеале это больше кода
def view(...)
user = users.lookup(user_id)
if not user:
return jsonify(success=False....)
# if user is true, do something else
Весь смысл функции хелперов find_user
является извлечение из общего кода, а затем повторно использовать в нескольких других подобных APIs.
Есть ли способ вернуть ответ прямо в моем текущем коде? Кажется, что это ненормально ... если я не изменил способ написания кода (как значения возвращаются ...)
Это отличный совет. Я всегда хотел ввести какое-то исключение. Это кажется хорошей идеей. Я боялся создавать слишком много обычаев для каждой ошибки, но да, я должен посмотреть на создание более общего. Изучит их. благодаря – User007