Регистрация путей через 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

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

import flask
from flask import Blueprint, render_template

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"