DevGang
Авторизоваться

Внутреннее устройство 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.

  1. 👉 Flask Material Kit - исходный код
  2. 👉 Комплект материалов для Flask - Живая демонстрация

Спасибо за чтение!

Источник:

#Flask
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу