Технологии и методы программирования. Учебное пособие
.pdfdef post_update(id):
article = Article.query.get(id) if request.method == "POST":
article.title = request.form['title'] article.intro = request.form['intro'] article.text = request.form['text']
try:
db.session.commit() return redirect('/posts') except:
return "При редактировании возникла ошибка" else:
return render_template("post_update.html", article=article)
Вфункции post_update при помощи get() берется запись
сопределенным идентификатором. Далее проверяется метод передачи данных. Если методом является POST, из формы HTML берутcя значения title, intro и text. После производится попытка обновления article
в базе данных при помощи session.commit(). В случае корректной обработки происходит перенаправление, в обратном случае выводится ошибка.
Создадим файл post_update.html в папке templates и пропишем форму для редактирования статьи в базе данных:
<div class="container mt-5"> <h1>Редактирование статьи</h1> <form method="post">
<input type="text" name="title" id="title" class="form-control" value="
{{ article.title }}"><br>
<textarea name="intro" id="intro" class="formcontrol">{{ article.intro }}</textarea><br>
<textarea name="text" id="text" class= "form-control">{{ article.text }}</textarea><br>
51
<input type="submit" class="btn btn-success" value="Обновить"><br>
</form>
</div>
Варианты практического задания № 4
Разработать алгоритмы извлечения, добавления, изменения и удаления записей в базе данных через web-интерфейс согласно варианту (табл. 15). Предусмотретьзапретотправкинезаполненныхполейиограничения на ввод данных согласно типу поля.
|
Таблица 15 |
|
|
Варианты для выполнения практического задания № 4 |
|
|
|
|
Вари- |
База данных |
|
ант |
||
|
||
|
|
|
1 |
Заметки. Поля: текст заметки, указатель важности заметки |
|
|
|
|
2 |
Телефонная книга. Поля: имя, номер телефона |
|
|
|
|
3 |
Список посещенных городов. Поля: город, дата посещения |
|
|
|
|
4 |
Количество шагов с указанием суммарного количества. |
|
|
Поля: количество шагов, дата |
|
|
|
|
5 |
Страница с отзывами и оценкой в виде количества звезд. |
|
|
Поля: текст отзыва, оценка от 1 до 5 |
|
|
|
|
6 |
Список прочитанных книг. Поля: автор, название |
|
|
|
|
7 |
Список игр в Steam. Поля: название, год издания |
|
|
|
|
8 |
Портфолио разработчика. Поля: название, ссылка на репозиторий |
|
|
|
|
9 |
Список трат на комплектующие для компьютера с выводом суммы. |
|
|
Поля: устройство, стоимость |
|
|
|
|
10 |
Список мест работы с указанием общего стажа. Поля: наименование |
|
|
места работы, срок работы в месяцах |
|
|
|
52
|
Окончание табл. 15 |
|
|
|
|
Вари- |
База данных |
|
ант |
||
|
||
11 |
Список прослушанных музыкальных альбомов. Поля: исполнитель, |
|
|
название альбома |
|
|
|
|
12 |
Список просмотренных фильмов. Поля: название, год выхода |
|
|
|
|
13 |
Список животных на ферме. Поля: животное, количество |
|
|
|
|
14 |
Меню ресторана. Поля: блюдо, цена |
|
|
|
|
15 |
Список товаров в интернет-магазине. Поля: товар, количество |
|
|
|
|
16 |
Бухгалтерия. Поля: сотрудник (ФИО), зарплата за месяц |
|
|
|
|
17 |
Список преподавателей кафедры. Поля: преподаватель (ФИО), |
|
|
должность |
|
|
|
|
18 |
Результаты футбольных матчей. Поля: две команды, счет игры |
|
|
|
|
19 |
Список каналов на YouTube. Поля: ссылка на канал, количество |
|
|
подписчиков |
|
20 |
Список групп VK. Поля: ссылка, название |
|
|
|
Контрольные вопросы
1.Расскажите про отслеживание URL.
2.Расскажите про отображение шаблонов.
3.Как создаются таблицы базы данных?
4.Приведите пример реализации добавления данных в БД.
5.Приведите пример реализации обновления данных в БД.
6.Приведите пример реализации удаления данных из БД.
7.Опишите алгоритм реализации отображения данных из БД.
53
РАСЧЕТНО-ГРАФИЧЕСКИЕ РАБОТЫ
Примеры расчетно-графических работ
1.Сбор данных с помощью API VK, OK, YouTube (Requests).
2.Парсинг данных с web-страниц (BeautifulSoup).
3.Реализация практического задания № 4 на фреймворке Django.
4.Создание бота для Telegram.
5.Работа с аудиофайлами в Python.
6.Обработка и распознавание изображений (Pillow, OpenCV).
7.Работа с текстом, распознавание частей речи (Pymorphy2, Pymysystem3).
8.Разработка 2D-игры (Pygame).
9.Программы с графическим интерфейсом (TKinter).
10.Классификация/кластеризация данных (Sci-Kit Learn).
11.Визуализация данных (Matplotlib, Seaborn).
Обзор необходимых библиотек
Requests. Одна из самых популярных общедоступных библиотек Python – это Requests. Ее цель – сделать HTTP-запросы более простыми и удобными для восприятия. Библиотека Requests имеет лицензию Apache2 и написана на языке Python. Она является фактическим стандартом, который используют разработчики для выполнения HTTP-за- просов в Python.
Помимо того что библиотека Requests может использоваться для отправки HTTP-запросов на сервер, она также позволяет добавлять в них
54
данные формы, содержимое, заголовок и файлы, состоящие из нескольких частей. При использовании этой библиотеки разработчикам не нужно добавлять запрос к URL-адресу или кодировать данные POST вручную.
Основные характеристики:
разрешает загрузку нескольких файлов и потоковую загрузку.
выполняет автоматическую расшифровку содержимого и автоматическое развертывание;
выполняет проверку SSL в браузере;
функции могут быть настроены и оптимизированы в соответствии
стребованиями;
поддерживаетпостоянноесоединениеиобъединенноеподключение;
поддерживает международные домены и URL-адреса.
BeautifulSoup. BeautifulSoup получила свое название благодаря своей способности анализировать документы HTML и XML (даже с некорректной разметкой, которую называют «tag soup» – «суп из тегов»). Этот пакет Python обходит веб-сайты, собирает данные и подготавливает их для дальнейшей работы. BeautifulSoup – это универсальный пакет, и поэтому его выбирают многие аналитики данных и ученые. Разработчики, занимающиеся вопросами машинного и глубокого обучения, также используют BeautifulSoup для получения данных для обучения своих моделей машинного/глубокого обучения.
Основные характеристики:
позволяет извлекать данные из HTML и XML, даже из документов
снекорректной или неполной разметкой (например, с незакрытыми тегами);
задумывалась как средство синтаксического анализа HTML, которое могло бы сделать «суп из тегов» работоспособным.
Django. Это свободный фреймворк для разработки быстрых и безопасных веб-приложений и сайтов на языке Python. Использует шаблон проектирования MVC.
Как и любой другой фреймворк, Django – это программная платформа (каркас), в которую разработчик добавляет дополнительные компоненты приложения, например следующие:
интерфейс пользователя;
55
скрипты (сценарии) работы элементов приложения/сайта;
программные библиотеки;
мультимедийный контент (фото, видео, аудио);
модули безопасности;
базы данных.
Базовая структура фреймворка включает следующие компоненты:
URL-маршрутизаторы, перенаправляющие HTTP-запрос от браузера или любого иного веб-клиента в представления;
представление, котороеобрабатываетзапрос, обращаетсякмодели
исообщает ей, какие именно данные из БД нужно задействовать, чтобы удовлетворить запрос;
модель (менеджер базы данных, ORM), получающую нужную информацию из БД и передающую ее представлению;
HTML-шаблоны, которые используются представлением для демонстрации пользователю полученных от модели данных.
Принципиальная схема работы Django приведена ниже.
Схема работы Django
56
Библиотеки для работы с Telegram
Для создания telegram-ботов на Python существует несколько десятков библиотек. Они различаются популярностью, размером сообщества и функциональностью.
Aiogram. Современная библиотека, набирающая популярность: многие чат-боты написаны на ней. Библиотека реализует асинхронное выполнение кода, что позволяет не останавливать работу бота в ожидании ответа пользователя. Кроме того, у Aiogram есть подробная документация и большое русскоязычное сообщество.
Python-telegram-bot. Одна из первых библиотек для создания ботов. Отличается от Aiogram синхронным подходом к работе, т. е. при ожидании ответа от пользователя выполнение кода останавливается.
TeleBot. Библиотека для создания простых ботов, позволяющая работатьс асинхронными синхроннымподходомна выбор. Подходитдля небольших проектов.
Библиотеки для работы с аудио
Librosa. Это универсальная библиотека для аудиоанализа. Она позволяет извлекать множество аудиофункций, таких как спектрограммы, хромограммы, темп и мел-частотные кепстральные коэффициенты (MFCC). Librosa облегчает извлечение важных характеристик из аудиофайлов и их последующий анализ.
Pydub. Эта библиотека обеспечивает простой интерфейс для манипулирования аудиофайлами. Вы можете нарезать, склеивать, изменять громкость, применять фильтры и эффекты к аудиофайлам. Pydub упрощает обработку аудио и создание новых аудиоматериалов.
Essentia. Это мощнаябиблиотекадля аудиоанализа соткрытым исходным кодом. Она предоставляет множество алгоритмов для извлечения акустических характеристик, таких как темп, ритм, тон, спектр и многое другое. Essentia позволяет выполнять более глубокий анализ музыкальных данных.
57
Библиотеки для работы с изображениями
Pillow. Это бесплатная библиотека Python, которая позволяет интерпретатору обрабатывать изображения. Иными словами, Pillow дает возможность обрабатывать, открывать и сохранять различные форматы изображений в Python.
Помимо мощных возможностей обработки изображений, Pillow предлагает эффективное внутреннее представление информации и всестороннюю поддержку форматов файлов. Стандартная библиотека Python обеспечивает быстрый доступ к данным, которые хранятся в нескольких основных форматах пикселей.
Основные характеристики:
поддержка отладки с помощью метода show();
идеально подходит для приложений пакетной обработки данных;
распознает и читает большое количество различных форматов файлов изображений;
предлагает интерфейсы BitmapImage, PhotoImage и Window DIB;
поддерживает произвольные аффинные преобразования, преобразования пространства цветов, фильтрацию с помощью набора встроенных ядер свертки, изменение размера и поворот изображения, а также поточечные операции;
гистограммы позволяют извлечь некоторую статистику из изображения, а также могут использоваться для автоматического повышения контрастности и глобального статистического анализа.
OpenCV. Как и любая библиотека Python, OpenCV имеет большое количество различных функций. Это делает ее отличным инструментом для программ компьютерного зрения в режиме реального времени. Эта высокоэффективная библиотека способна обрабатывать различные входные данные с визуальной информацией, взятой не только из изображений, но и из видеоданных. OpenCV может распознавать лица, почерк и объекты.
Основные характеристики:
выполняет такие задачи, как отслеживание угроз, обнаружение лиц, обнаружение ориентиров;
предоставляет разработчикам доступ к более чем 2500 классическим современным алгоритмам;
используется для анализа изображений/видео.
58
Pymorphy2 и Pymysystem3
Pymorphy2. Это морфологический анализатор русского языка. Он распознает и приводит слова к нормальной форме (например, «люди –> человек», или «гулял –> гулять»), меняет число, род, падеж и пр.
Pymysystem3. Библиотека от Яндекса имеет точно такой же функционал, как и Pymorphy2, и является ее альтернативой. Pymystem3 быстро и качественно распознает части речи и лексемы слова.
Библиотеки для создания приложений и визуализации данных
Pygame. Это бесплатная библиотека Python с открытым исходным кодом. Она предназначена для разработки мультимедийных приложений на Python, в частности двумерных игр. Популярна как среди обычных, так и профессиональных разработчиков игр на Python.
За кадром Pygame использует библиотеку SDL (Simple DirectMedia Layer). КакиSDL, библиотекаPygame отличаетсявысокойпереносимостью, а значит, обеспечивает поддержку большого количества платформ и операционных систем.
Приложения, которыебылиразработаныспомощьюPygame, можно портировать на Android-устройства, такие как смартфоны и планшеты. Дляэтого необходимо использоватьpgs4a (версияPygame для Android).
Основные характеристики:
упрощает использование многоядерных процессоров;
для использования всех доступных функций графический интерфейс не нужен;
обеспечивает поддержку большого количества платформ и операционных систем;
использует код ассемблера и оптимизированный код С для реализации основных функций.
TKinter. TKinter позволяет просто и быстро создавать приложения с графическим интерфейсом. TKinter – это стандартная библиотека графического интерфейса для языка программирования Python.
59
Она предлагает мощный объектно-ориентированный интерфейс для инструментария графического интерфейса TK.
В TKinter есть более 15 типов графических элементов, в том числе кнопки, метки и текстовые поля. Каждый из них имеет доступ к определенных методам управления геометрией, которые необходимы для их организации в основной области графических элементов.
Основные характеристики:
включаетвсебянаборграфическихэлементов, которыеподдерживают методы управления геометрией;
упрощает разработку приложений с графическим интерфейсом;
поддерживает эффективный объектно-ориентированный интерфейс.
Sci-Kit Learn. Основана на Numpy и SciPy, прежде была известна как Sklearn. Это бесплатная библиотека Python, и она очень часто воспринимается как расширение SciPy. Библиотека Sci-Kit Learn была создана специально для разработки алгоритмов машинного обучения и моделирования данных.
Для многих Sci-Kit Learn – это одна из лучших библиотек Python изза ее последовательного, простого и интуитивно понятного интерфейса. Поскольку она очень удобна в использовании, то многие считают, что она идеально подходит для новичков.
Основные характеристики:
библиотека машинного обучения;
предлагает практически все алгоритмы, которые необходимы для машинного обучения;
создана на основе SciPy, NumPy и Matplotlib.
Matplotlib. Это библиотекаPython соткрытымисходнымкодом, которую часто приводят в пример как альтернативу платному MATLAB. Matplotlib – эторасширениеSciPy, ионобылосозданодлявизуализации данных, поскольку используется для создания диаграмм и графиков. Matplotlib может работать со сложными моделями данных, которые выводит Pandas, и со структурами данных, которые создает NumPy.
У Matplotlib есть ограничение: она может создавать только 2D-гра- фики. Однако эта библиотека может создавать готовые к публикации
60
