Blueprint - Чертежи Flask

Содержание
Введение
FLASK_APP
Просмотр всех методов (url_map)
Пример
Другие статьи о Flask

Введение

Чертежи нужны для разделения проекта на подпроекты. Обычно удобнее выделять какой-то функционал в отдельные .py файлы, классический import как в обычном Python коде делать не рекомендуется

Создание и регистрация чертежа без url_prefix

Предположим, в вашем проекте project есть папка app и в ней у вас уже есть рабочий __init__.py файл

Создайте файл blog.py в той же директории и напишите минимальный код.

touch app/blog.py
vi app/blog.py

from flask import ( Blueprint, flash, g, redirect, render_template, request, url_for ) bp = Blueprint('blog', __name__) @bp.route('/') def index(): return render_template('blog/index.html')

Обратите внимание, что url слушается с помощью @bp.route а не @app.route как в приложении без чертежей

Этот blueprint нужно зарегистрировать. Внесите изменения в __init__.py подразумевается, что приложение запущено через factory

vi app/__init__.py

from . import blog app.register_blueprint(blog.bp) app.add_url_rule('/', endpoint='index')

В директории templates создайте поддиректорию blog и поместите туда файл с шаблоном

mkdir app/templates/blog
touch app/templates/blog/index.html

При создании чертежа blog.py было передано всего два аргумента - название чертежа и __name__

bp = Blueprint('blog', __name__)

При регистарции этого черетежа в __init__.py endpoint был указан как index

from . import blog app.register_blueprint(blog.bp) app.add_url_rule('/', endpoint='index')

В этом случае у чертежа не будет определён url_prefix

Таким образом blog становится корневым

Второй вариант - задать префикс, рассмотрим его в следующем параграфе

url_prefix

Создайте файл auth.py с минимальным кодом

from flask import ( Blueprint, flash, g, redirect, render_template, request, url_for ) bp = Blueprint('auth', __name__, url_prefix='/auth')

Обратите внимание на строку

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

При создании чертежа auth передаётся уже три аргумента: название чертежа, __name__ и url_prefix='/auth'

При регистрации этого чертежа не нужно дополнительно вызывать add_url_rule

from . import auth app.register_blueprint(auth.bp)

Шаблон

В папке templates создайте подпапку auth и поместите туда файл с шаблоном

mkdir app/templates/blog
touch app/templates/auth/login.html

Похожие статьи
Flask
Основы
Python
Запуск Flask на хостинге
Запуск Flask на Linux сервере
Flask в Docker
Первый проект на Flask
Шаблоны Jinja
Web Forms
Blueprint - Чертежи Flask
Как разбить приложение Flask на части
Flask FAQ
Ошибки
Декораторы в Python
HTML
CSS

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: