Я прочитал эту документацию для настройки колбы с чертежами.Но по какой-то причине мои запросы curl проходят через routes.py
.Вот моя файловая структура:
backend
|-tools.py
|-app/
|-project/
|-__init__.py
|-heatmap/
|-__init__.py
|-routes.py
Файл backend/app/project/__init__.py
- это место, где у меня зарегистрированы все чертежи, и где у меня есть метод, который создает приложение для колб, которое я затем вызываю в backend/tools.py
.Вот фрагмент того, как я регистрирую чертежи и метод:
backend/app/project/__init__.py
def register_blueprints(app):
from .heatmap import heatmap_blueprint
app.register_blueprint(
heatmap_blueprint,
url_prefix='/heatmap'
)
def create_app(debug=False):
app = Flask(__name__)
app.debug = debug
app.url_map.strict_slashes = False
app.config['SECRET_KEY'] = 'super_secret'
initialize_extensions(app)
register_blueprints(app)
@app.teardown_appcontext
def close_db(error):
"""Closes the database again at the end of the request."""
for db_enum in DB:
db = g.pop(db_enum.value, None)
if db is not None:
db.close()
return app
Вот фрагмент тепловой карты routes.py
:
backend/app/project/heatmap/routes.py
from flask import request, render_template
from app.core.heatmap_python.Heatmaps import Heatmaps
from . import heatmap_blueprint
@heatmap_blueprint.route('/', methods=["GET", "POST"])
def index():
if request.method == "GET":
return render_template('heatmap/index.html')
elif request.method == "POST":
data = request.form.to_dict()
h = Heatmaps(data)
response = h.run()
return render_template('heatmap/results.html', response=response)
Вот файл __init__.py
каталога heatmap
: backend/app/project/heatmap/__init__.py
from flask_restful import abort, Resource, Api
from webargs import fields
from webargs.flaskparser import use_args
# from investment_tools import api
from flask import Blueprint, url_for
heatmap_blueprint = Blueprint('heatmap', __name__, template_folder='templates',
static_folder='static', static_url_path='/heatmap/static')
from . import routes
api = Api(heatmap_blueprint)
# API
HEATMAPS = {
'A': {'asd': 'asd'},
'B': {'bcd': 'bcd'}
}
def abort_if_arg_doesnt_exist(args):
print(args)
heatmap_args = {
# All are required arguments
'currency': fields.Str(required=True),
'field': fields.Str(required=True),
'sector': fields.Str(required=True),
'seniority': fields.Str(required=True),
}
class HeatmapApi(Resource):
@use_args(heatmap_args)
def post(self, args):
print("The args are: ")
print(args['currency'])
print(args['field'])
return "<h1>Hello World</h1>", 201
api.add_resource(HeatmapApi, '/heatmap')
И поэтому, когда я делаю POST
запросов в этой настройке, они проходят через файл routes.py
.Если я закомментирую эту часть:
@heatmap_blueprint.route('/', methods=["GET", "POST"])
def index():
if request.method == "GET":
return render_template('bheatmap/index.html')
elif request.method == "POST":
data = request.form.to_dict()
h = Heatmaps(data)
response = h.run()
return render_template('heatmap/results.html', response=response)
Тогда конечная точка сообщения в backend/app/project/heatmap/__init__.py
не будет зарегистрирована, так как я получаю сообщение об ошибке, что такой конечной точки нет: TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement.
.Так что мои настройки должны быть ошибочными.Не могли бы вы указать мне, что здесь не так?