Разверните план в Flask, разделив его на несколько файлов - PullRequest
0 голосов
/ 05 июня 2019

В колбе у меня есть проект, который становится слишком длинным, и я хотел бы разбить его на несколько файлов, используя тот же маршрут /games

Я пытался расширить класс, но он не работает?

# games.py
from flask import Blueprint

bp = Blueprint('games', __name__, url_prefix='/games')

@bp.route('/')
def index():
    ...

.

# games_extend.py
from .games import bp

@bp.route('/test')
def test_view():
    return "Hi!"

Я что-то не так делаю или есть способ получше?

1 Ответ

1 голос
/ 05 июня 2019

Вы можете заставить его работать, используя абсолютные пути (пакеты), вот как:

app.py

from __future__ import absolute_import
from flask import Flask
from werkzeug.utils import import_string

api_blueprints = [
    'games',
    'games_ext'
]

def create_app():
    """ Create flask application. """
    app = Flask(__name__)

    # Register blueprints
    for bp_name in api_blueprints:
        print('Registering bp: %s' % bp_name)
        bp = import_string('bp.%s:bp' % (bp_name))
        app.register_blueprint(bp)

    return app

if __name__ == '__main__':
    """ Main entrypoint. """
    app = create_app()
    print('Created app.')
    app.run()

п.н. / INIT .py

п.н. / games.py

from __future__ import absolute_import
from flask import Blueprint, jsonify

bp = Blueprint('games', __name__, url_prefix='/games')

@bp.route('/')
def index():
    return jsonify({'games': []})

п.н. / games_ext.py

from .games import bp

@bp.route('/test')
def test_view():
    return "Hi!"

Запустите ваш сервер, используя: python -m app

Затем отправьте запросы Get в / games / и / games / test / endpoints. Работал на меня.

Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...