Flask. Model. Пример#5


15.04.2020

В этом примере приложения на Flask показано, как можно организовать работу с данными используя возможности ООП, и сделать код приложения легко читаемым, разделенным на функциональные модули и гибким. Этот пример можно использовать как некий базовый шаблон для начала разработки приложения.

Классы model

В этом примере сделано следующим образом. В папке model в файле default.py описан класс model, от которого наследуются классы, описанные в файлах client.py, seller.py, product.py. Т.е. default.py является своеобразным «шаблоном» для классов, которые работают с таблицами базы данных. Абсолютно не обязательно наследовать классы именно от него. Вы можете написать свой класс (это будет рассмотрено в следующем примере) с теме же методами __init__, create, read, update, delete.

Т.е. описанные в файлах client.py, seller.py, product.py классы наследуются от описанного в default.py. Если нам потребуется что-то изменить в конкретном классе, мы сможем сделать это в соответствующем файле.

Включение классов

Для "включения" нужных классов в файле app_db.py импортируем классы из нужных файлов:

from model import empty, client, seller, product

И в __init__

добавляем создание объектов:

self.model['client'] = client.model(self.connection)
self.model['seller'] = seller.model(self.connection)
self.model['product'] = product.model(self.connection)

Так делается для того, чтобы можно было потом найти объект по имени.

Роуты

В файле my_app.py описаны роуты. Теперь в роутах фигурирует имя «модели». Т.е. нам не нужно будет в дальнейшем добавлять новые роуты для каждой модели данных.

Как это работает

При GET запросе типа http://localhost:5000/client/ сработает роут:

@app.route('//', methods=['GET'])
def model_read_all(model):
        return jsonify(db.getModel(model).read()), 200

В нем в качестве параметра фигурирует имя модели. По имени модели метод db.getModel возвращает объект. И уже затем вызывается метод найденного объекта. В данном случае read.

Теперь, когда потребуется организовать работу с "табличкой в базе данных", достаточно описать класс в отдельном файле, скопировать его в папку «model» и прописать в файле app_db.py

Запуск примера

В этом примере, как и в предыдущих, нужно сначала создать базу данных. Для этого запустите скрипт createDB.py.


python3 ./createDB.py

Этот скрипт создаст базу данных SQLite и заполнит её данными.

После этого можно запускать пример:


python3 ./my_app.py

Откройте в браузере:
http://localhost:5000/frontend/

Фронтенд практически не изменился. JsvaScript все пишет в консоль. Добавлены ссылки для просмотра данных Client, Seller, Product.

В следующем примере:

Cross-origin resource sharing (CORS) - совместное использование ресурсов между разными источниками.

Смотри также:

Web-dev склерозник
Коментарі:
Додати коментар
Code
* - обов'язкові поля

Архіви