Я пытаюсь реализовать некоторую обобщенную c обработку ошибок в моем приложении flask, но я получаю эту ошибку в консоли во время отладки.
TypeError: Функция просмотра не смогла вернуть правильный ответ. Функция либо вернула None, либо завершилась без оператора return.
Мое flask приложение выглядит как
import json
import os
import sys
from flask import Flask, request, Response, render_template, jsonify
from werkzeug.utils import secure_filename
from werkzeug import exceptions
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = r'tmp'
app.config['ALLOWED_EXTENSIONS'] = set(['jpg', 'jpeg'])
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS']
@app.errorhandler(Exception)
def handle_exception(e):
code = 500
if isinstance(e, exceptions.HTTPException):
code = e.code
response = app.response_class(
response=json.dumps("test"),
status=code,
mimetype='application/json'
)
return response
@app.route("/ocr", methods=['POST'])
def ocr():
try:
result = []
file = request.files['file']
keyvalue = {}
filename = secure_filename(file.filename)
# check for supported file types
extension = os.path.splitext(filename)[1].lstrip('.').lower()
if extension in app.config['ALLOWED_EXTENSIONS']:
img = os.path.join(app.config['UPLOAD_FOLDER'], filename)
file.save(img)
if extension == 'pdf':
# ...
# code
# ...
return json.dumps(result)
else:
# ...
# code
# ...
return json.dumps(result)
else:
raise Exception("File type unsupported")
except Exception as error:
handle_exception(error)
if __name__ == "__main__":
app.run(host='0.0.0.0', port="5050", debug=True)
Я не хочу шаблон HTML, потому что служба использует этот сервис (не нужно ничего отображать в браузере). Я хочу вернуть json ответ с кодом ошибки и сообщением об ошибке.