Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Технологии и методы программирования. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
1 Мб
Скачать

def 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]