Моя проблема:
У меня проблемы с приложением Flask, когда дело доходит до указания типа возврата функции, которая вызывает jsonify()
в возвращении. jsonify
от Flask в конечном итоге возвращает current_app.response_class
. Однако, указав этот тип возврата в подписи, я получаю сообщение об ошибке.
Ошибка:
Traceback (most recent call last):
File "wsgi.py", line 1, in <module>
from app import app as application
File "./app.py", line 94, in <module>
def handle_msg_request() -> current_app.response_class:
File "/usr/local/lib/python3.7/site-packages/werkzeug/local.py", line 348, in __getattr__
return getattr(self._get_current_object(), name)
File "/usr/local/lib/python3.7/site-packages/werkzeug/local.py", line 307, in _get_current_object
return self.__local()
File "/usr/local/lib/python3.7/site-packages/flask/globals.py", line 51, in _find_app
raise RuntimeError(_app_ctx_err_msg)
RuntimeError: Working outside of application context.
This typically means that you attempted to use functionality that needed
to interface with the current application object in some way. To solve
this, set up an application context with app.app_context(). See the
documentation for more information.
Код обидчика:
from flask import Flask, render_template, request, jsonify, send_from_directory, current_app
@app.route("/requestmessages", methods=['POST'])
def handle_msg_request() -> current_app.response_class:
last_id = int(request.form['lastId'])
data = get_all_chat_dict(min=last_id)
if len(data) == 0:
return jsonify(hasNewData=False)
return jsonify(hasNewData=True, dataRows=data)
Похожие / похожие проблемы:
Я видел, как этот вопрос был решен с помощью with
для контекста, но я не совсем уверен, как бы я применил это здесь, так как я просто пытаюсь указать тип возврата для функции.
Как я могу указать тип возвращаемого значения в моей подписи, когда этот тип переплетается с контекстом приложения?