Регистрация путей через Blueprint

Admin Flask

Blueprint — упрощает организацию путей на Flask.

Этот материал из цикла статей по разработке сайтов на python: от локальной разработки до развертывания на удаленном сервере.

Упрощенный вид кода для работы сайта на Flask:

Стандартный Flask

from flask import Flask
app = Flask(__name__)
app.config.from_object('config.DevConfig')

# Website routes
@app.route('/')
def home():
    return "Home"

# Admin pages
@app.route('/portfolio')
def portfolio_home():
    return "portfolio Home"

if __name__ == "__main__":
    app.run()

Отсюда нам интересны только роуты (route). Мы можем эти роуты вынести в отдельный файл. Это нормальная практика даже для небольшого проекта. Однако что делать, если роутов слишком много?

Для этих целей подходит распределение роутов через Blueprint.

Роуты через Blueprint

В файле app/__init__.py подключаем несколько файлов routes.py:

# Регистрация путей Blueprint
from app.routes import main_bp
app.register_blueprint(main_bp, url_prefix="/")

from app.admin.routes import admin_bp
app.register_blueprint(admin_bp, url_prefix="/admin")

Как видно выше, у нас два файла routes.py в двух директориях. Для главной страницы это файл app/routes.py. Для страницы админки это файл app/admin/routes.py.

app/routes.py

Содержимое файла:

main_bp = Blueprint('main_blueprint', __name__)

# Include main page
# Подключение главной страницы
@main_bp.route('/')
def portfolio_home_route():
    return 'Сайт работает.'
    # return flask.redirect("/admin/")
    # return render_template('/admin/index.html')

app/portfolio/routes.py

Содержимое файла:

portfolio_bp = Blueprint('portfolio', __name__)

# Получение списка всех названий когда-либо купленных акций
@portfolio_bp.route('/get-user/', methods=['GET'])
@login_required
def get_all_user_shares_route():
    query = db.session.query(Portfolio.name).filter_by(user_id=flask_login.current_user.id)
    shares = [x.name for x in query.all()]
    return json.dumps(shares)

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Регистрация путей через Blueprint"