🏠 | 💻 IT | Flask |

Blueprint - Чертежи Flask

↓ Contents ↓
Introduction
FLASK_APP
Просмотр всех методов (url_map)
Пример

Introduction

Чертежи нужны для разделения проекта на подпроекты. Обычно удобнее выделять какой-то функционал в отдельные .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 на хостинге
Запуск Flask на Linux сервере
Первый проект на Flask
Шаблоны Jinja
Flask FAQ
Web Forms
Errors
Contacts and cooperation:
I recommend our hosting beget.ru
Write to info@urn.su if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: