Python Hub - сборище Питонистов
❗️ Как работает **kwargs в Python? 🔻 Что такое **kwargs? В Python, **kwargs - это параметр, который позволяет передавать произвольное количество именованных аргументов в функцию. **kwargs расшифровывается как "ключ-значение аргументы" и представляет собой…
То есть мы просто получим словарь в самой функции. Где ключами будут параметры, которые указали при передаче, а значениями - их значения.
👍3
Python Hub - сборище Питонистов
Photo
Разбор 👨💻
Исходя из поста выше про **kwargs следует:
Переменная kwargs будет словарем с двумя парами —> data : вся инфа из всего словаря data и info: info.
Перебирая циклом, мы пробежимся по ключам —> data и info. Это и будет ответом.
Переменная kwargs будет словарем с двумя парами —> data : вся инфа из всего словаря data и info: info.
Перебирая циклом, мы пробежимся по ключам —> data и info. Это и будет ответом.
👍2
❗️ Сравнение *args и **kwargs. Когда что использовать?
Когда вы работаете с функциями в Python, вы можете столкнуться с двумя специальными параметрами: *args и **kwargs. Оба эти параметра позволяют передавать переменное количество аргументов в функцию.
🔻 *args: передача произвольного числа аргументов
Параметр *args позволяет передавать произвольное количество позиционных аргументов в функцию. Когда вы используете *args, все переданные аргументы будут собраны в кортеж. Вы можете использовать этот кортеж внутри функции для обработки переданных значений.
Одним из примеров использования *args может быть функция, которая суммирует все переданные числа. Предположим, у нас есть функция
🔻 **kwargs: передача произвольного числа именованных аргументов
Параметр **kwargs позволяет передавать произвольное количество именованных аргументов в функцию. В отличие от *args, аргументы передаются в виде пар ключ-значение, и они собираются в словарь. Вы можете использовать этот словарь внутри функции для доступа к переданным значениям.
Одним из примеров использования **kwargs может быть функция, которая выводит информацию о переданных пользователях. Предположим, у нас есть функция
🔻 Когда что использовать?
- *args следует использовать, когда вы хотите передать произвольное количество позиционных аргументов в функцию и работать с ними как с кортежем. Например, это может быть полезно, когда вам необходимо суммировать числа или склеить строки.
- **kwargs следует использовать, когда вы хотите передать произвольное количество именованных аргументов в функцию и работать с ними как с словарем. Это может быть полезно, когда вам необходимо обрабатывать различные параметры или настройки.
Когда вы работаете с функциями в Python, вы можете столкнуться с двумя специальными параметрами: *args и **kwargs. Оба эти параметра позволяют передавать переменное количество аргументов в функцию.
🔻 *args: передача произвольного числа аргументов
Параметр *args позволяет передавать произвольное количество позиционных аргументов в функцию. Когда вы используете *args, все переданные аргументы будут собраны в кортеж. Вы можете использовать этот кортеж внутри функции для обработки переданных значений.
Одним из примеров использования *args может быть функция, которая суммирует все переданные числа. Предположим, у нас есть функция
sum_numbers, принимающая произвольное количество аргументов. Мы можем вызвать эту функцию с разным количеством чисел и получить их сумму.def sum_numbers(*args):
total = 0
for num in args:
total += num
return total
print(sum_numbers(1, 2, 3)) # Output: 6
print(sum_numbers(10, 20, 30, 40)) # Output: 100
🔻 **kwargs: передача произвольного числа именованных аргументов
Параметр **kwargs позволяет передавать произвольное количество именованных аргументов в функцию. В отличие от *args, аргументы передаются в виде пар ключ-значение, и они собираются в словарь. Вы можете использовать этот словарь внутри функции для доступа к переданным значениям.
Одним из примеров использования **kwargs может быть функция, которая выводит информацию о переданных пользователях. Предположим, у нас есть функция
print_users, которая принимает именованные аргументы в виде пары ключ-значение, где ключ - это имя пользователя, а значение - его возраст. Мы можем вызвать эту функцию с разными пользователями и получить информацию о них.def print_users(**kwargs):
for name, age in kwargs.items():
print(f"User {name} is {age} years old")
print_users(john=25, alice=30, bob=35)
# Output:
# User john is 25 years old
# User alice is 30 years old
# User bob is 35 years old
🔻 Когда что использовать?
- *args следует использовать, когда вы хотите передать произвольное количество позиционных аргументов в функцию и работать с ними как с кортежем. Например, это может быть полезно, когда вам необходимо суммировать числа или склеить строки.
- **kwargs следует использовать, когда вы хотите передать произвольное количество именованных аргументов в функцию и работать с ними как с словарем. Это может быть полезно, когда вам необходимо обрабатывать различные параметры или настройки.
👍3
Что выдаст код выше?
Anonymous Quiz
6%
((1, 2, 3),)
10%
((((1, 2, 3),),),)
21%
(((1, 2, 3),),)
26%
(1, 2, 3)
13%
1, 2, 3
11%
Error
13%
Не знаю ¯\_(ツ)_/¯
👍3
Python Hub - сборище Питонистов
Photo
Разбор 👨💻
*args всегда принимает все параметры в кортеж. Даже если там был 1 параметр - будет кортеж с 1 значением внутри. сначала получим (1, 2, 3).
На следующем вызове уже ((1, 2, 3), ). Кортеж залетел, как параметр кортежа.
Далее (((1, 2, 3), ), ). Еще раз та же самая операция.
На следующем вызове уже ((1, 2, 3), ). Кортеж залетел, как параметр кортежа.
Далее (((1, 2, 3), ), ). Еще раз та же самая операция.
👍2
🔔Написать простого бота aiogram 3.x и выложить его на бесплатный хостинг?
📹 Показал, как актуально это можно сделать! 📹
🔥 Смотрите, оценивайте, пользуйтесь💓 🔥
❗️Полезны видосы с Aiogram 3 и бесплатными хостами?
https://www.youtube.com/watch?v=mYlM4RWTHnk
📹 Показал, как актуально это можно сделать! 📹
🔥 Смотрите, оценивайте, пользуйтесь💓 🔥
❗️Полезны видосы с Aiogram 3 и бесплатными хостами?
https://www.youtube.com/watch?v=mYlM4RWTHnk
YouTube
Создаем TELEGRAM БОТА на PYTHON AIOGRAM 3.x и заливаем на БЕСПЛАТНЫЙ ХОСТИНГ | Pythonanywhere
В этом видео я покажу, как создать телеграм бота на библиотеке аиограм версии 3, языке программирования пайтон и залить его на абсолютно бесплатный хостинг pythonanywhere всего за 5 минут!
Подписывайся на наш телеграм канал! 👨💻
https://t.me/pythonhub001…
Подписывайся на наш телеграм канал! 👨💻
https://t.me/pythonhub001…
👍2🔥1
❗️ Библиотека aiohttp в Python
Библиотека aiohttp основана на пакете asyncio, который вводит понятие корутин и сопрограмм в Python. Она предоставляет простой и эффективный способ создания асинхронных HTTP-клиентов и серверов. С помощью aiohttp вы можете отправлять асинхронные HTTP-запросы, обрабатывать ответы и работать с веб-сокетами.
Одним из ключевых преимуществ библиотеки aiohttp является ее высокая производительность. Благодаря асинхронной архитектуре, aiohttp позволяет обрабатывать большое количество одновременных запросов без блокировки потоков выполнения. Это делает ее отличным выбором для создания высоконагруженных веб-приложений, которым требуется быстрый и эффективный обмен данными с удаленными серверами.
🔻 Использование aiohttp-socks
Aiohttp-socks - это дополнение к aiohttp, библиотеке для асинхронной работы с протоколом HTTP в Python. Она позволяет делать асинхронные HTTP-запросы через SOCKS-прокси, что может быть полезно, например, при парсинге веб-страниц или при работе с API веб-сервисов. Библиотека поддерживает различные версии протокола SOCKS, включая SOCKS4, SOCKS4a и SOCKS5.
Команда установки:
https://pypi.org/project/aiohttp-socks/
Библиотека aiohttp основана на пакете asyncio, который вводит понятие корутин и сопрограмм в Python. Она предоставляет простой и эффективный способ создания асинхронных HTTP-клиентов и серверов. С помощью aiohttp вы можете отправлять асинхронные HTTP-запросы, обрабатывать ответы и работать с веб-сокетами.
Одним из ключевых преимуществ библиотеки aiohttp является ее высокая производительность. Благодаря асинхронной архитектуре, aiohttp позволяет обрабатывать большое количество одновременных запросов без блокировки потоков выполнения. Это делает ее отличным выбором для создания высоконагруженных веб-приложений, которым требуется быстрый и эффективный обмен данными с удаленными серверами.
🔻 Использование aiohttp-socks
Aiohttp-socks - это дополнение к aiohttp, библиотеке для асинхронной работы с протоколом HTTP в Python. Она позволяет делать асинхронные HTTP-запросы через SOCKS-прокси, что может быть полезно, например, при парсинге веб-страниц или при работе с API веб-сервисов. Библиотека поддерживает различные версии протокола SOCKS, включая SOCKS4, SOCKS4a и SOCKS5.
Команда установки:
pip install aiohttp-socksСсылка на либу:
https://pypi.org/project/aiohttp-socks/
PyPI
aiohttp-socks
Proxy connector for aiohttp
👍5
Что выдаст код выше?
Anonymous Quiz
63%
meow
5%
NotImplementedError
7%
None
9%
<function a at 0x7fca32ee3d90>
11%
meow None
5%
meow <function a at 0x7fca32ee3d90>
👍2
Python Hub - сборище Питонистов
Photo
Разбор 👨💻
1. У нас есть класс Animal, который служит абстракцией и определяет метод voice.
2. Класс Cat наследует от Animal и переопределяет метод voice, выводя "meow".
3. Мы создаем объект cat как экземпляр класса Cat.
4. Вызываем cat.voice() и выводим результат с print().
Но помним что cat.voice() только выводит результат принтом и не возвращает ничего с помощью return
5. Результат: создание cat, вызов cat.voice() выводит "meow", но тк мы пытаемся вывести результат, который возвращается из функции, а там нет явного return то получаем None.
Итак, код выведет "meow None".
2. Класс Cat наследует от Animal и переопределяет метод voice, выводя "meow".
3. Мы создаем объект cat как экземпляр класса Cat.
4. Вызываем cat.voice() и выводим результат с print().
Но помним что cat.voice() только выводит результат принтом и не возвращает ничего с помощью return
5. Результат: создание cat, вызов cat.voice() выводит "meow", но тк мы пытаемся вывести результат, который возвращается из функции, а там нет явного return то получаем None.
Итак, код выведет "meow None".
👍5
❗️Match/case в Python 3.10: Новый способ обработки условий
Python 3.10 представил новый механизм обработки условий, известный как
Пример использования
✅ Преимущества
- Безопасность: Этот механизм позволяет избежать ошибок, связанных с неожиданными значениями переменных.
- Удобство: Синтаксис
🔹 Интересные особенности
-
-
- Возможность использовать
🔹 Заключение
Python 3.10 представил новый механизм обработки условий, известный как
match/case. Этот механизм позволяет более явно и удобно обрабатывать различные варианты значений переменных или выражений.match/case - это способ структурированной обработки значений переменных или выражений. Он предоставляет более читаемый и понятный способ определения различных случаев и действий, которые следует выполнить в зависимости от этих случаев.Пример использования
match/case:match color:
case "red":
print("красный")
case "blue":
print("синий")
case "green":
print("зелёный")
case _:
print("это не красный, синий или зелёный")
В этом примере мы с помощью match мы проверяем значение color и, в зависимости от его значения, выполняем соответствующее действие.✅ Преимущества
match/case
- Читаемость: match/case делает код более понятным и легко читаемым, особенно при обработке большого количества вариантов.- Безопасность: Этот механизм позволяет избежать ошибок, связанных с неожиданными значениями переменных.
- Удобство: Синтаксис
match/case является более удобным и гибким в сравнении с традиционными if/elif/else конструкциями.🔹 Интересные особенности
-
case поддерживает сопоставление с различными типами данных, включая кортежи, списки и др.-
case также может выполнять условия при сопоставлении, что позволяет создавать более сложные проверки.- Возможность использовать
case в выражениях, что облегчает создание функционального кода.🔹 Заключение
match/case - это мощный инструмент для обработки условий в Python 3.10 и выше. Он улучшает читаемость кода и делает его более безопасным, предоставляя более явный способ определения различных вариантов обработки данных. Поэтому, при работе с новыми версиями Python, рассмотрите возможность использования match/case для улучшения структуры вашего кода.👍3❤🔥1
Python Hub - сборище Питонистов
❗️Match/case в Python 3.10: Новый способ обработки условий Python 3.10 представил новый механизм обработки условий, известный как match/case. Этот механизм позволяет более явно и удобно обрабатывать различные варианты значений переменных или выражений. …
Шпаргалка в виде картинки 📝
👍4
Когда Словари Превосходят match/case в Python
Python 3.10 внедрил новый механизм
📦 Простота и Читаемость
Словари, как структуры данных, обладают простотой и лаконичностью. Создание словаря для сопоставления значений с действиями делает ваш код более понятным и легкочитаемым. Вместо написания нескольких
🚀 Гибкость и Расширяемость
Используя словари, вы можете легко добавлять новые значения и действия без изменения кода в большинстве случаев. Например, если вы хотите добавить обработку кода 403, вы просто добавляете его в словарь:
⚡️ Производительность
В некоторых случаях словари могут быть более производительными, особенно когда у вас есть большой набор значений. Python имеет эффективную реализацию хэш-таблиц, которая делает поиск по словарю быстрым даже для больших наборов данных.
🔍 Когда Использовать
🔗 Заключение
Словари предоставляют удивительно гибкий и простой способ обработки условий в Python. Иногда, вместо использования
Python 3.10 внедрил новый механизм
match/case, о котором мы говорили недавно, для обработки условий, что, безусловно, улучшило читаемость кода и сделало его более явным. Однако существуют ситуации, когда классический подход с использованием словарей превосходит match/case. В этой статье мы рассмотрим, почему иногда словари являются более предпочтительным решением.📦 Простота и Читаемость
Словари, как структуры данных, обладают простотой и лаконичностью. Создание словаря для сопоставления значений с действиями делает ваш код более понятным и легкочитаемым. Вместо написания нескольких
case блоков в match/case, можно просто создать словарь, где ключи - это значения, а значения - это действия:codes = {
200: "OK",
404: "Not Found",
500: "Server Error"
}
И использовать его для обработки значений:code = 404
print(codes.get(code, "Unknown"))
Этот код читается легче и проще в поддержке.🚀 Гибкость и Расширяемость
Используя словари, вы можете легко добавлять новые значения и действия без изменения кода в большинстве случаев. Например, если вы хотите добавить обработку кода 403, вы просто добавляете его в словарь:
codes[403] = "Forbidden"
С match/case вам придется добавлять новый case, что требует изменения кода в нескольких местах.⚡️ Производительность
В некоторых случаях словари могут быть более производительными, особенно когда у вас есть большой набор значений. Python имеет эффективную реализацию хэш-таблиц, которая делает поиск по словарю быстрым даже для больших наборов данных.
🔍 Когда Использовать
match/case
Несмотря на преимущества словарей, match/case имеет свои сильные стороны, такие как более строгая проверка на сопоставление и поддержка сложных выражений. Используйте match/case, когда вам действительно нужна его функциональность, но помните, что есть альтернативные решения, которые могут быть более простыми и эффективными.🔗 Заключение
Словари предоставляют удивительно гибкий и простой способ обработки условий в Python. Иногда, вместо использования
match/case, создание словарей для сопоставления значений с действиями может быть лучшим выбором, обеспечивая легкочитаемый, гибкий и производительный код. Выбор зависит от конкретных требований вашего проекта, но имейте в виду, что в Python есть множество инструментов для достижения одной и той же цели.👍5🔥5
❗️ Что такое сокеты? (кратко)
Сокеты являются одним из основных понятий в компьютерных сетях. Они представляют собой программный интерфейс, который позволяет приложениям обмениваться данными через сеть.
Сокеты - это точка соединения между двумя программами, которые обмениваются данными через сеть. Один сокет может отправлять данные, а другой может принимать их. Сокеты работают на разных уровнях сетевой модели, таких как уровень транспорта (например, TCP или UDP) и уровень сети (например, IPv4 или IPv6).
🔻 Работа с сокетами
Для работы с сокетами в приложении необходимо выполнить несколько шагов. Во-первых, нужно создать сокет, указав его тип (например, TCP или UDP) и семейство адресов (например, IPv4 или IPv6). Затем необходимо привязать сокет к определенному порту или адресу. После этого можно начать передачу данных через сокет, используя методы отправки и приема данных.
Сокеты являются одним из основных понятий в компьютерных сетях. Они представляют собой программный интерфейс, который позволяет приложениям обмениваться данными через сеть.
Сокеты - это точка соединения между двумя программами, которые обмениваются данными через сеть. Один сокет может отправлять данные, а другой может принимать их. Сокеты работают на разных уровнях сетевой модели, таких как уровень транспорта (например, TCP или UDP) и уровень сети (например, IPv4 или IPv6).
🔻 Работа с сокетами
Для работы с сокетами в приложении необходимо выполнить несколько шагов. Во-первых, нужно создать сокет, указав его тип (например, TCP или UDP) и семейство адресов (например, IPv4 или IPv6). Затем необходимо привязать сокет к определенному порту или адресу. После этого можно начать передачу данных через сокет, используя методы отправки и приема данных.
👍4
❗️Что такое Миксины (Mixin) в Python?
Миксины (Mixin) - это одна из мощных возможностей языка Python, которая позволяет нам повторно использовать код и добавлять функциональность к классам. Миксин - это класс, содержащий методы, которые можно добавить в другие классы без необходимости наследования от него.
🔻 Определение
Миксины - это классы, которые содержат методы, но не предоставляют конкретной реализации класса. Их целью является предоставление специфической функциональности, которую можно добавить в другие классы. Миксины могут содержать как обычные методы, так и абстрактные методы, которые должны быть реализованы классами, использующими Миксин. Они предоставляют возможность композиции кода и избегают проблем, связанных с наследованием от нескольких классов.
🔻 Преимущества использования Миксинов
Использование Миксинов в Python имеет несколько преимуществ. Во-первых, это позволяет повторно использовать код и избегать дублирования. Миксины позволяют нам добавлять функциональность к классам без необходимости менять их иерархию наследования. Во-вторых, Миксины предоставляют возможность гибкой композиции кода. Мы можем добавлять один или несколько Миксинов к классу и получать только нужную функциональность. В-третьих, использование Миксинов улучшает читаемость кода и упрощает его поддержку. Код становится более модульным и понятным, что облегчает его изменение и расширение.
🔻 Пример использования Миксинов
Давайте рассмотрим пример использования Миксинов. Предположим, у нас есть класс
В данном примере мы создали класс
Миксины (Mixin) - это одна из мощных возможностей языка Python, которая позволяет нам повторно использовать код и добавлять функциональность к классам. Миксин - это класс, содержащий методы, которые можно добавить в другие классы без необходимости наследования от него.
🔻 Определение
Миксины - это классы, которые содержат методы, но не предоставляют конкретной реализации класса. Их целью является предоставление специфической функциональности, которую можно добавить в другие классы. Миксины могут содержать как обычные методы, так и абстрактные методы, которые должны быть реализованы классами, использующими Миксин. Они предоставляют возможность композиции кода и избегают проблем, связанных с наследованием от нескольких классов.
🔻 Преимущества использования Миксинов
Использование Миксинов в Python имеет несколько преимуществ. Во-первых, это позволяет повторно использовать код и избегать дублирования. Миксины позволяют нам добавлять функциональность к классам без необходимости менять их иерархию наследования. Во-вторых, Миксины предоставляют возможность гибкой композиции кода. Мы можем добавлять один или несколько Миксинов к классу и получать только нужную функциональность. В-третьих, использование Миксинов улучшает читаемость кода и упрощает его поддержку. Код становится более модульным и понятным, что облегчает его изменение и расширение.
🔻 Пример использования Миксинов
Давайте рассмотрим пример использования Миксинов. Предположим, у нас есть класс
Person, который представляет человека и имеет метод greet(), который выводит приветствие. Мы хотим добавить в этот класс возможность отправки электронного письма. Мы можем создать Миксин EmailMixin, который содержит метод send_email(), и затем добавить этот Миксин к классу Person. Теперь объекты класса Person будут иметь и метод greet(), и метод send_email(), позволяющий отправлять письма.class Person:
def __init__(self, name):
self.name = name
def greet(self):
print(f"Привет, меня зовут {self.name}!")
class EmailMixin:
def send_email(self, recipient, subject, message):
print(f"Отправляю электронное письмо на адрес {recipient}:")
print(f"Тема: {subject}")
print(f"Сообщение: {message}")
class PersonWithEmail(Person, EmailMixin):
pass
person = PersonWithEmail("Иван")
person.greet()
person.send_email("example@example.com", "Привет!", "Как дела?")
В данном примере мы создали класс
Person и Миксин EmailMixin. Затем мы создали класс PersonWithEmail, который наследуется от Person и добавляет функциональность EmailMixin. Мы создали объект person класса PersonWithEmail и использовали его методы greet() и send_email().👍4❤🔥1
Что выдаст код выше?
Anonymous Quiz
11%
flex Python
4%
flex Hub
21%
flex Python Hub
14%
flex Hub flex Python
36%
flex Python flex Hub
4%
flex flex
4%
Error
7%
Не знаю
👍2
Python Hub - сборище Питонистов
Photo
Разбор 👨💻
Статья о миксинах могла вам помочь при решении задачи.
Создаем класс миксин, в котором реализуем метод добавления к передаваемому слову приставки flex.
Далее создаем два класса с одинаковым методом output, однако внимательные заметят, один из них возвращает результат текстовый, а второй принтует сразу в консоль.
Ну и при инициализации списка, мы создаем в нем объект, для которого сразу вызываем метод output —> один результат выводит и возвращает в список None, а другое просто возвращает текст в список.
В консоли будет только flex Python
Создаем класс миксин, в котором реализуем метод добавления к передаваемому слову приставки flex.
Далее создаем два класса с одинаковым методом output, однако внимательные заметят, один из них возвращает результат текстовый, а второй принтует сразу в консоль.
Ну и при инициализации списка, мы создаем в нем объект, для которого сразу вызываем метод output —> один результат выводит и возвращает в список None, а другое просто возвращает текст в список.
В консоли будет только flex Python
👍2
❗️Flask WTForms: Что это такое и как использовать?
🔻 Что такое Flask WTForms?
Flask WTForms - это расширение для Flask, которое интегрирует популярную библиотеку WTForms в приложения Flask. WTForms - это гибкая библиотека валидации и отображения форм для разработки веб-приложений на языке Python. Она предоставляет простой и интуитивно понятный способ создания HTML-форм и валидации пользовательского ввода. Используя Flask WTForms, вы можете легко определить свои формы в виде классов Python и отображать их в ваших шаблонах Flask.
🔻 Как использовать Flask WTForms
Чтобы начать использовать Flask WTForms в вашем приложении Flask, вам сначала необходимо установить его с помощью pip. Вы можете сделать это, запустив следующую команду:
После установки Flask WTForms вам нужно импортировать его в ваше приложение Flask. В вашем файле Python добавьте следующую строку:
Теперь вы можете определить свои формы как подклассы FlaskForm. Каждый класс формы будет представлять определенную форму в вашем приложении. Вы можете определить поля в вашей форме, используя различные классы полей, предоставленные Flask WTForms, такие как StringField, IntegerField, BooleanField и другие.
После определения формы вы можете отобразить ее в вашем шаблоне Flask, используя объект
Чтобы обрабатывать отправку формы, вам необходимо определить маршрут в вашем приложении Flask, который будет обрабатывать POST-запросы. В этом маршруте вы можете использовать объект
🔻 Что такое Flask WTForms?
Flask WTForms - это расширение для Flask, которое интегрирует популярную библиотеку WTForms в приложения Flask. WTForms - это гибкая библиотека валидации и отображения форм для разработки веб-приложений на языке Python. Она предоставляет простой и интуитивно понятный способ создания HTML-форм и валидации пользовательского ввода. Используя Flask WTForms, вы можете легко определить свои формы в виде классов Python и отображать их в ваших шаблонах Flask.
🔻 Как использовать Flask WTForms
Чтобы начать использовать Flask WTForms в вашем приложении Flask, вам сначала необходимо установить его с помощью pip. Вы можете сделать это, запустив следующую команду:
pip install Flask-WTF
После установки Flask WTForms вам нужно импортировать его в ваше приложение Flask. В вашем файле Python добавьте следующую строку:
from flask_wtf import FlaskForm
Теперь вы можете определить свои формы как подклассы FlaskForm. Каждый класс формы будет представлять определенную форму в вашем приложении. Вы можете определить поля в вашей форме, используя различные классы полей, предоставленные Flask WTForms, такие как StringField, IntegerField, BooleanField и другие.
После определения формы вы можете отобразить ее в вашем шаблоне Flask, используя объект
form.Чтобы обрабатывать отправку формы, вам необходимо определить маршрут в вашем приложении Flask, который будет обрабатывать POST-запросы. В этом маршруте вы можете использовать объект
request для доступа к данным формы и валидировать их с помощью функции form.validate_on_submit(). Если данные формы являются допустимыми, вы можете их обработать и выполнить необходимые действия.👍3