Внутреннее устройство Flask
В этой статье представлены несколько команд, которые мы можем выполнить внутри Flask Shell, которые могут помочь нам понять структуру и бизнес-логику устаревшего веб-приложения. Это может нам понадобиться, когда мы начинаем работать над новым проектом, разработанным или закодированным в прошлом, или когда наше собственное веб-приложение становится больше.
✨ Введение в Flask
Flask - это облегченная структура веб-приложений WSGI. Он разработан, чтобы сделать начало работы быстрым и легким, с возможностью масштабирования до сложных приложений. Начать работу с Flask довольно просто. После установки Python3 и современного редактора кода, такого как VsCode или Atom, мы можем написать наше первое веб-приложение.
$ pip install flask
Приведенная выше команда установит последнюю версию Flask через PIP, официальный менеджер пакетов для Python.
# Contents of - app.py
from flask import Flask, escape, request
app = Flask(__name__)
@app.route('/')
def hello():
return f'Hello from Flask!'
После сохранения файла мы можем вызвать Flask с помощью команды:
$ flask run
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
✨ Интерфейс командной строки Flask
Flask предоставляет удобный способ взаимодействия со всеми внутренними компонентами приложения через простой интерфейс командной строки, поддерживаемый пакетом Click
. Чтобы вызвать CLI, нам нужно выполнить следующую команду:
$ flask shell
>>> # The shell is waiting for our commands
👉 Интерфейс командной строки Flask - List Routes
$ flask shell
>>> from app import app
>>> app.url_map
Map([<Rule '/register.html' (HEAD, POST, GET, OPTIONS) -> register>,
<Rule '/logout.html' (HEAD, GET, OPTIONS) -> logout>,
<Rule '/sitemap.xml' (HEAD, GET, OPTIONS) -> sitemap>,
<Rule '/login.html' (HEAD, POST, GET, OPTIONS) -> login>,
<Rule '/static/<filename>' (HEAD, GET, OPTIONS) -> static>,
<Rule '/<path>' (HEAD, GET, OPTIONS) -> index>,
<Rule '/' (HEAD, GET, OPTIONS) -> index>])
👉 Интерфейс командной строки Flask - Print static folder
$ flask shell
>>> from app import app
>>> app.static_folder
'D:\\work\\flask-material-kit\\app\\static'
👉 Интерфейс командной строки Flask - Print templates folder
$ flask shell
>>> from app import app
>>> app.template_folder
'templates'
👉 Интерфейс командной строки Flask - List Database Models
Объект db
содержит интерфейс SqlAlchemy
, и мы будем тянуть информацию через этот объект.
$ flask shell
>>> from app import db # <-- db is the object
👉 Список всех таблиц
>>> from app import app, db
>>> db.metadata.tables
FacadeDict({'Users': Table('Users', MetaData(), Column('id', Integer(), table=<Users>, primary_key=True, nullable=False), Column('user', String(length=64), table=<Users>), Column('email', String(length=120), table=<Users>), Column('password', String(length=500), table=<Users>), schema=None)})
В моем проекте у нас одна таблица Users
- давайте посмотрим на определение:
>>> from app import app, db
>>> db.metadata.tables['Users']
Table('Users', MetaData(), Column('id', Integer(), table=<Users>, primary_key=True, nullable=False), Column('user', String(length=64), table=<Users>), Column('email', String(length=120), table=<Users>), Column('password', String(length=500),
table=<Users>), schema=None
👉 Интерфейс командной строки Flask - List Table Columns
>>> from app import app, db
>>> for col in db.metadata.tables['Users'].columns:
... print ( col )
...
Users.id
Users.user
Users.email
Users.password
✨ Бесплатный образец - комплект материалов
Любопытные умы могут экспериментировать и играть со всеми вышеперечисленными командами, используя этот образец с открытым исходным кодом, предоставляемый с базой данных, аутентификацией, SqlAlchemy ORM и поддержкой Docker - Flask Material Kit.
- 👉 Flask Material Kit - исходный код
- 👉 Комплект материалов для Flask - Живая демонстрация
Спасибо за чтение!