Планы на ближайшее будущее.
Приветствую.
Канал только создан, а планов уже вагон и маленькая тележка!
Планы по развитию канала:
1. Нарисовать аватарку =)
2. Сделать Telegram-бота для канала
3. Сделать сайт с более расширенными версиями постов.
4. Делать качественный контент ;)
С чего собственно начнём?
Вот с сайта и начнём.
Скоро начнется серия (возможно длинная серия) постов о процессе создания собственного сайта на Django.
Также возможно, что это будет перемешиваться с постами о разработке бота и последующей связке сайта с ботом.
Также, если у вас есть идеи для контента, интересные вам библиотеки или фреймворки, занятные задачки на программирование - смело предлагайте в комментариях. То, что заинтересует меня, может появиться в будущих публикациях.
Приветствую.
Канал только создан, а планов уже вагон и маленькая тележка!
Планы по развитию канала:
1. Нарисовать аватарку =)
2. Сделать Telegram-бота для канала
3. Сделать сайт с более расширенными версиями постов.
4. Делать качественный контент ;)
С чего собственно начнём?
Вот с сайта и начнём.
Скоро начнется серия (возможно длинная серия) постов о процессе создания собственного сайта на Django.
Также возможно, что это будет перемешиваться с постами о разработке бота и последующей связке сайта с ботом.
Также, если у вас есть идеи для контента, интересные вам библиотеки или фреймворки, занятные задачки на программирование - смело предлагайте в комментариях. То, что заинтересует меня, может появиться в будущих публикациях.
Оглавление для серии постов по Django.
Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.
Django 1. Установка Django
Django 2. Создание проекта
Django 3. Базовая конфигурация
Поправка к посту Django 3. Базовая конфигурация
Django 4. Суперпользователь и первый запуск
Django 5. Инициализация приложения блога
Django 6. Базовый шаблон
Django 7. Первое представление
Django 8. Первая модель
Поправка к посту Django 8 Первая модель.
Django 9. Регистрация модели
Django 10. Пишем API - Сериализатор
Django 11. Пишем API - Обработчик запросов
Django 12. Настройка отправки почты
Django 13. Сброс пароля
Django 14. Модель пользователя бота
Django 15. Пишем API - Добавление пользователя
Django 16. Модель категорий
Django 17. Разделение шаблонов
Django 18. Представление для главной и категорий
Django 19. Визуальный редактор CKEditor5
Django 20. Модель поста
Django 21. Регистрация модели поста
Django 22. Представление для страницы поста
Django 23. Добавляем sitemap и счётчики
Django 24. Связь модели файла и поста
Django 25. Добавляем теги к постам
Django 26. Контекстные процессоры
Django 27.1 Представления на основе классов
Django 27.2 Представления на основе классов - Практика
Django 28. Добавляем пагинацию на сайт
Django 29.1 Добавляем поиск на сайт
Django 29.2 Добавляем поиск на сайт, продолжение
Django 30. Рефакторинг и допущенные ошибки
Django 31. Форма авторизации и кнопка выхода
Django 32. Форма регистрации
Django 33. Сброс пароля пользователя
Django 34.1. Простой профиль пользователя - страница профиля
Django 34.2. Простой профиль пользователя - страница настроек
Django 35.1. Расширенный профиль пользователя - модель и сигналы
Django 35.2. Расширенный профиль пользователя - форма и шаблон
Django 36. Добавление постов пользователем
Django 37. Две формы - добавление категории и файла
Django 38.1. Кабинет и все посты автора
Django 38.2. Добавление, редактирование, удаление поста
Django 39. Капча и подтверждение регистрации по email
Django 40. Собственные страницы ошибок
Django 41. Комментарии к постам
Django 42. Запуск Django-проекта на VPS
Django 43. Подключаем Celery и Redis для фоновой отправки почты
Django 44. Отправка электронной почты в фоновом режиме
#django #оглавление
Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.
Django 1. Установка Django
Django 2. Создание проекта
Django 3. Базовая конфигурация
Поправка к посту Django 3. Базовая конфигурация
Django 4. Суперпользователь и первый запуск
Django 5. Инициализация приложения блога
Django 6. Базовый шаблон
Django 7. Первое представление
Django 8. Первая модель
Поправка к посту Django 8 Первая модель.
Django 9. Регистрация модели
Django 10. Пишем API - Сериализатор
Django 11. Пишем API - Обработчик запросов
Django 12. Настройка отправки почты
Django 13. Сброс пароля
Django 14. Модель пользователя бота
Django 15. Пишем API - Добавление пользователя
Django 16. Модель категорий
Django 17. Разделение шаблонов
Django 18. Представление для главной и категорий
Django 19. Визуальный редактор CKEditor5
Django 20. Модель поста
Django 21. Регистрация модели поста
Django 22. Представление для страницы поста
Django 23. Добавляем sitemap и счётчики
Django 24. Связь модели файла и поста
Django 25. Добавляем теги к постам
Django 26. Контекстные процессоры
Django 27.1 Представления на основе классов
Django 27.2 Представления на основе классов - Практика
Django 28. Добавляем пагинацию на сайт
Django 29.1 Добавляем поиск на сайт
Django 29.2 Добавляем поиск на сайт, продолжение
Django 30. Рефакторинг и допущенные ошибки
Django 31. Форма авторизации и кнопка выхода
Django 32. Форма регистрации
Django 33. Сброс пароля пользователя
Django 34.1. Простой профиль пользователя - страница профиля
Django 34.2. Простой профиль пользователя - страница настроек
Django 35.1. Расширенный профиль пользователя - модель и сигналы
Django 35.2. Расширенный профиль пользователя - форма и шаблон
Django 36. Добавление постов пользователем
Django 37. Две формы - добавление категории и файла
Django 38.1. Кабинет и все посты автора
Django 38.2. Добавление, редактирование, удаление поста
Django 39. Капча и подтверждение регистрации по email
Django 40. Собственные страницы ошибок
Django 41. Комментарии к постам
Django 42. Запуск Django-проекта на VPS
Django 43. Подключаем Celery и Redis для фоновой отправки почты
Django 44. Отправка электронной почты в фоновом режиме
#django #оглавление
🔥8👍1
Код на салфетке pinned «Оглавление для серии постов по Django. Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения. Django 1. Установка Django Django 2. Создание проекта Django 3. Базовая конфигурация Поправка к посту Django…»
Django 1. Установка Django
Наверняка, вы уже видели установку и создание базового проекта в Django множество раз, но поскольку данный цикл подразумевает серию постов "от начала и до победного", начнем с основ.
Стоит упомянуть используемую в данных постах среду разработки:
- Интерпретатор Python 3.11.4, но работать точно будет на любой версии 3.10+. Скачать актуальную версию Python можно на сайте: https://www.python.org/
- IDE Pycharm, скачать Community-версию можно на сайте: https://www.jetbrains.com/pycharm/download/
- Или IDE VisualStudio Code, скачать можно на сайте: https://code.visualstudio.com/download
- Разработка ведётся на Windows 11. В дальнейшем проект переедет на VPS с Debian 12, но разработка по-прежнему будет на Windows.
- Локально запущен Docker-контейнер с PostgreSQL.
О дополнительных инструментах и библиотеках буду сообщать, когда они будут использоваться.
Приступим.
Создаём новый проект в PyCharn.
Сразу же после создания проекта в корне папки создаём файл
Для установки Django, открываем терминал и выполняем команду:
Начнётся процесс скачивания и установки Django и требуемых зависимостей.
Далее находим в конце вывода строку вида:
На данный момент актуальная версия Django - 4.2.2.
Копируем название библиотеки и версию и вставляем в файл
Должно получиться:
На этом установка завершена. В следующем посте будем инициализировать проект.
Файлы к посту, можно получить в боте по коду: 994192
Пост на сайте.
Поддержать канал.
#django #python #установка
Наверняка, вы уже видели установку и создание базового проекта в Django множество раз, но поскольку данный цикл подразумевает серию постов "от начала и до победного", начнем с основ.
Стоит упомянуть используемую в данных постах среду разработки:
- Интерпретатор Python 3.11.4, но работать точно будет на любой версии 3.10+. Скачать актуальную версию Python можно на сайте: https://www.python.org/
- IDE Pycharm, скачать Community-версию можно на сайте: https://www.jetbrains.com/pycharm/download/
- Или IDE VisualStudio Code, скачать можно на сайте: https://code.visualstudio.com/download
- Разработка ведётся на Windows 11. В дальнейшем проект переедет на VPS с Debian 12, но разработка по-прежнему будет на Windows.
- Локально запущен Docker-контейнер с PostgreSQL.
О дополнительных инструментах и библиотеках буду сообщать, когда они будут использоваться.
Приступим.
Создаём новый проект в PyCharn.
Сразу же после создания проекта в корне папки создаём файл
requirements.txt. В данный файл будем заносить используемые в проекте библиотеки и их версии. Это необходимо для быстрой установки используемых библиотек в других средах разработки или при запуске проекта в Docker-контейнере. Также жесткая привязка к версиям позволит избежать возможных проблем, связанных с нововведениями в той или иной библиотеке.Для установки Django, открываем терминал и выполняем команду:
pip install Django. Начнётся процесс скачивания и установки Django и требуемых зависимостей.
Далее находим в конце вывода строку вида:
Successfully installed Django-4.2.2.На данный момент актуальная версия Django - 4.2.2.
Копируем название библиотеки и версию и вставляем в файл
requirements.txt, заменив - на ==. Должно получиться:
Django==4.2.2.На этом установка завершена. В следующем посте будем инициализировать проект.
Файлы к посту, можно получить в боте по коду: 994192
Пост на сайте.
Поддержать канал.
#django #python #установка
👍3
Django 2. Создание проекта
Django установлена, самое время создать проект.
Для создания проекта, в терминале вводим команду
Теперь надо определиться с базой данных. По умолчанию в Django используется SQLite, что отлично подойдёт для обучения и локальной разработки, но будет весьма плохим выбором в реальной работе сайта.
Для изменения базы данных, необходимо открыть файл
Конфигурация по умолчанию:
Для себя я сразу буду использовать базу на PosgreSQL. И собственно рекомендую эту базу данных. Она быстрая, современная и в Django для неё есть множество дополнительных возможностей.
Конфигурация для PostgreSQL:
После настроек БД, не зависимо от того, меняли ли тип БД, необходимо применить первоначальные миграции. Это необходимо для создания таблиц используемых в дальнейшей работе.
Для этого в терминале необходимо перейти в папку проекта
В следующем посте продолжим первоначальную конфигурацию Django.
Файлы к посту, можно получить в боте по коду: 246189
Пост на сайте.
Поддержать канал.
#django #python #проект #настройка
Django установлена, самое время создать проект.
Для создания проекта, в терминале вводим команду
django-admin startproject pressanybutton. Где pressanybutton - название вашего проекта. После выполнения команды, в корне появится папка с названием проекта и основными конфигурационными файлами.Теперь надо определиться с базой данных. По умолчанию в Django используется SQLite, что отлично подойдёт для обучения и локальной разработки, но будет весьма плохим выбором в реальной работе сайта.
Для изменения базы данных, необходимо открыть файл
settings.py в папке проекта и найти параметр DATABASES.Конфигурация по умолчанию:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Если на данный момент у вас нет локального или удалённого сервера БД, оставляйте значение по умолчанию.Для себя я сразу буду использовать базу на PosgreSQL. И собственно рекомендую эту базу данных. Она быстрая, современная и в Django для неё есть множество дополнительных возможностей.
Конфигурация для PostgreSQL:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'имя_базы_данных',
'USER': 'имя_пользователя_базы',
'PASSWORD': 'пароль_базы',
'HOST': 'сервер_БД(localhost если сервер установлен локально или hostname/ip если сервер запущен удалённо)',
'PORT': '5432',
}
}
Для работы Django с PostgreSQL необходимо установить библиотеку psycopg. Для этого выполняем команду в терминале pip install psycopg. Не забываем добавить название библиотеки и установленную версию в файл requirements.txt.После настроек БД, не зависимо от того, меняли ли тип БД, необходимо применить первоначальные миграции. Это необходимо для создания таблиц используемых в дальнейшей работе.
Для этого в терминале необходимо перейти в папку проекта
cd pressanybutton и вызвать миграции python manage.py migrate. В следующем посте продолжим первоначальную конфигурацию Django.
Файлы к посту, можно получить в боте по коду: 246189
Пост на сайте.
Поддержать канал.
#django #python #проект #настройка
🔥2👍1
Поскольку в материалах по Django я использую PostgreSQL, запущенную в контейнере, появилось желание написать статью об использовании Docker в практических целях.
В связи с этим возникает вопрос: на основе какой операционной системы делать материалы?
В связи с этим возникает вопрос: на основе какой операционной системы делать материалы?
Anonymous Poll
70%
Windows
30%
Linux
❤1
Django 3. Базовая конфигурация
Чтобы не возвращаться к теме основной конфигурации, давайте сразу изменим необходимые параметры для проекта.
Откроем файл
Пройдемся по параметрам в файле, требующим изменения.
Параметр
В данном параметре определяются настройки шаблонов и контекстные процессоры(Мы о них ещё поговорим, наберитесь терпения). В данный момент нам надо изменить подпараметр
По умолчанию он
Параметр
Данный параметр определяет то, на каком языке используется Django.
По умолчанию установлено значение
Параметр
Данный параметр необходим для того, чтобы Django верно считал время.
По умолчанию параметр установлен на
Параметры
По умолчанию в конфигурации присутствует только один параметр -
Давайте добавим недостающие параметры:
Также я определил два дополнительных параметра:
Когда мы на сайте пытаемся получить фото по условному адресу "
На этом базовая настройка закончена. В следующем посте будем создавать пользователя и производить тестовый запуск.
Файлы к посту, можно получить в боте по коду: 102802
Пост на сайте.
Поддержать канал.
#django #python #проект #настройка
Чтобы не возвращаться к теме основной конфигурации, давайте сразу изменим необходимые параметры для проекта.
Откроем файл
settings.py в папке проекта.Пройдемся по параметрам в файле, требующим изменения.
Параметр
TEMPLATES.В данном параметре определяются настройки шаблонов и контекстные процессоры(Мы о них ещё поговорим, наберитесь терпения). В данный момент нам надо изменить подпараметр
DIRS.По умолчанию он
'DIRS': [],. Для того, чтобы Django знал, где искать шаблоны сайта, необходимо изменить поле на 'DIRS': [BASE_DIR / 'templates'],.Параметр
LANGUAGE_CODE.Данный параметр определяет то, на каком языке используется Django.
По умолчанию установлено значение
'en-us'. Для Русского языка изменим его на 'ru-ru'.Параметр
TIME_ZONE.Данный параметр необходим для того, чтобы Django верно считал время.
По умолчанию параметр установлен на
'UTC'. Тут необходимо установить удобный для вас часовой пояс. Если ваш сайт будет ориентироваться на Московское время, то 'Europe/Moscow', если ваш сайт направлен на, допустим, часовой пояс Владивостока, то стоит указать 'Asia/Vladivostok'.Параметры
STATIC_URL, STATIC_ROOT, MEDIA_URL, MEDIA_ROOT.По умолчанию в конфигурации присутствует только один параметр -
STATIC_URL, определяющий путь в URL-адресе до статических файлов шаблона. К статическим файлам относятся используемые в проекте CSS и JS файлы.Давайте добавим недостающие параметры:
STATIC_URL = 'static/'В коде выше, я добавил параметр
STATIC_ROOT = BASE_DIR / 'static/'
MEDIA_URL = 'media/'
MEDIA_ROOT = BASE_DIR / 'media/'
MEDIA_URL, который определяет путь до медиа файлов. К ним относятся загружаемые изображения, видео, и т.д.Также я определил два дополнительных параметра:
STATIC_ROOT и MEDIA_ROOT. В них мы указываем физический путь до файлов. Когда мы на сайте пытаемся получить фото по условному адресу "
site.ru/media/photos/bestphoto.jpg", Django увидит запрос к медиа файлу в адресе и, получив полный путь из MEDIA_ROOT, передаст файл пользователю для отображения на сайте.На этом базовая настройка закончена. В следующем посте будем создавать пользователя и производить тестовый запуск.
Файлы к посту, можно получить в боте по коду: 102802
Пост на сайте.
Поддержать канал.
#django #python #проект #настройка
Django 4. Суперпользователь и первый запуск
Предварительные настройки позади. Настало время проверить работоспособность, но перед этим давайте создадим суперпользователя.
Суперпользователь, как понятно из названия, это главный пользователь сайта с максимальными правами.
Для его создания необходимо в терминале выполнить команду
После выполнения команды запустится интерактивное создание учётной записи. В интерактивном режиме необходимо будет заполнить 4 поля:
- Имя пользователя
- Адрес электронной почты
- Пароль
- Повторение пароля
Обратите внимание, во время ввода пароля вводимые символы не отображаются. Будьте внимательны!
В результате выполнения, должно появиться сообщение:
Настало время проверить, что у нас получилось.
Для запуска Django необходимо в терминале выполнить следующую команду:
Перейдя по ссылке или введя её в адресную строку браузера, вы должны увидеть приветственную страницу Django с ракетой и текстом "Установка прошла успешно! Поздравляем!".
Поздравляю и я. Всё работает корректно!
Мы не просто создавали суперпользователя.
Если перейти по адресу
Вводим логин и пароль, указанные ранее, и нажимаем "Войти". Таким образом, мы попадаем в панель администратора.
Если вы ранее работали с CMS, то административная панель может показаться не просто скучной, а буквально пустой. Это объясняется тем, что Django - это фреймворк, а не CMS, и многие инструменты мы должны создавать самостоятельно, добавляя их в административную панель.
Что бы остановить веб-сервер, в терминале с запущенным Django достаточно нажать сочетание клавиш
В следующем посте, начнём создавать своё приложение блога.
Файлы к посту, можно получить в боте по коду: 491226
Пост на сайте.
Поддержать канал.
#django #python #запуск
Предварительные настройки позади. Настало время проверить работоспособность, но перед этим давайте создадим суперпользователя.
Суперпользователь, как понятно из названия, это главный пользователь сайта с максимальными правами.
Для его создания необходимо в терминале выполнить команду
python manage.py createsuperuser. Убедитесь, что в терминале вы находитесь в той же директории, что и файл manage.py. Проверить это можно командой ls, если файла manage.py в выводе нет, необходимо перейти в папку проекта командой: cd <название_проекта>.После выполнения команды запустится интерактивное создание учётной записи. В интерактивном режиме необходимо будет заполнить 4 поля:
- Имя пользователя
- Адрес электронной почты
- Пароль
- Повторение пароля
Обратите внимание, во время ввода пароля вводимые символы не отображаются. Будьте внимательны!
В результате выполнения, должно появиться сообщение:
Superuser created successfully.Настало время проверить, что у нас получилось.
Для запуска Django необходимо в терминале выполнить следующую команду:
python manage.py runserver. При запуске Django проверяет, нет ли ошибок в коде, мешающих запуску. После проверок будет запущен веб-сервер, и в терминале отобразится служебная информация. Среди неё будет ссылка для доступа к сайту: https://127.0.0.1:8000/.Перейдя по ссылке или введя её в адресную строку браузера, вы должны увидеть приветственную страницу Django с ракетой и текстом "Установка прошла успешно! Поздравляем!".
Поздравляю и я. Всё работает корректно!
Мы не просто создавали суперпользователя.
Если перейти по адресу
https://127.0.0.1:8000/admin/, мы попадём на страницу авторизации в панель администратора Django. Вводим логин и пароль, указанные ранее, и нажимаем "Войти". Таким образом, мы попадаем в панель администратора.
Если вы ранее работали с CMS, то административная панель может показаться не просто скучной, а буквально пустой. Это объясняется тем, что Django - это фреймворк, а не CMS, и многие инструменты мы должны создавать самостоятельно, добавляя их в административную панель.
Что бы остановить веб-сервер, в терминале с запущенным Django достаточно нажать сочетание клавиш
CTRL+C.В следующем посте, начнём создавать своё приложение блога.
Файлы к посту, можно получить в боте по коду: 491226
Пост на сайте.
Поддержать канал.
#django #python #запуск
🔥2
Оглавление для серии постов по AIOgram3
Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.
AIOgram3 1. Начинаем создавать Telegram-бота
AIOgram3 1.5. Регистрация бота
AIOgram3 2. Точка входа
AIOgram3 3. Основная функция
AIOgram3 4. Эхо-бот
AIOgram3 5.1. Создание структуры
AIOgram3 5.2. Создание структуры, продолжение
AIOgram3 6. Информирование администратора
AIOgram3 7. Получение пути до файла по API
AIOgram3 8.1 Команда отправки файла
AIOgram3 8.2 Команда отправки файла, продолжение
AIOgram3 9. Команда start
AIOgram3 10. Пара простых команд
AIOgram3 11. Обновление для команды get_file
AIOgram3 12. Добавление бота в чат
AIOgram3 13. Прогноз погоды в боте - OpenWeatherMap
AIOgram3 14. Фильтруем запрещённые слова
AIOgram3 15. Обработка события вступления или покидания чата
AIOgram3 16. Перевод голосовых сообщений в текст
AIOgram3 17. Подготовка к разворачиванию на сервере
AIOgram3 18. Подключаем оплату Telegram StarsAIOgram3 19. Капча для вступающих в чатБот-автоответчик с ChatGPT для Бизнес-аккаунта в Telegram на Aiogram 3
#aiogram #оглавление
Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.
AIOgram3 1. Начинаем создавать Telegram-бота
AIOgram3 1.5. Регистрация бота
AIOgram3 2. Точка входа
AIOgram3 3. Основная функция
AIOgram3 4. Эхо-бот
AIOgram3 5.1. Создание структуры
AIOgram3 5.2. Создание структуры, продолжение
AIOgram3 6. Информирование администратора
AIOgram3 7. Получение пути до файла по API
AIOgram3 8.1 Команда отправки файла
AIOgram3 8.2 Команда отправки файла, продолжение
AIOgram3 9. Команда start
AIOgram3 10. Пара простых команд
AIOgram3 11. Обновление для команды get_file
AIOgram3 12. Добавление бота в чат
AIOgram3 13. Прогноз погоды в боте - OpenWeatherMap
AIOgram3 14. Фильтруем запрещённые слова
AIOgram3 15. Обработка события вступления или покидания чата
AIOgram3 16. Перевод голосовых сообщений в текст
AIOgram3 17. Подготовка к разворачиванию на сервере
AIOgram3 18. Подключаем оплату Telegram StarsAIOgram3 19. Капча для вступающих в чатБот-автоответчик с ChatGPT для Бизнес-аккаунта в Telegram на Aiogram 3
#aiogram #оглавление
❤5👍5
AIOgram3 1. Начинаем создавать Telegram-бота
Telegram-боты - интересная и весьма обширная тема. Можно сделать простейшего бота, повторяющего слова, а можно создать многофункциональный комбайн с множеством строк чистой логики.
Этим постом, я начинаю серию, посвящённую разработке Telegram-бота на основе библиотеки AIOgram версии 3, и конечно, "от начала и до победного".
Почему я выбрал именно AIOgram 3, который в данный момент находится в стадии бета-тестирования? Именно по этой причине. К тому моменту, когда AIOgram 3 выйдет из бета-версии, у меня будет множество наработок по разработке, и это будет являться большим плюсом. Кроме того, он асинхронный и поддерживает FSM.
И чтобы сделать содержимое еще более интересным, посты о Django и боте будут переплетаться между собой. У меня в планах реализовать бота, который будет выдавать дополнительные материалы в ответ на запросы, а для удобного управления файлами бот будет обращаться к Django через API.
Я надеюсь, что это будет полезным и интересным.
Приступаем к работе.
Создаём новый проект в IDE и сразу же создаём файл
Чтобы установить библиотеку, нужно выполнить следующую команду в терминале:
На данный момент актуальная версия AIOgram -
Добавляем ее в файл
Так как это бета-версия, Pycharm может считать, что указанная версия в requirements.txt не соответствует действительности. В этом случае нужно проигнорировать ошибку.
В следующем посте начнём делать бота.
Файлы к посту, можно получить в боте по коду: 347734
Пост на сайте.
Поддержать канал.
#aiogram #python #установка
Telegram-боты - интересная и весьма обширная тема. Можно сделать простейшего бота, повторяющего слова, а можно создать многофункциональный комбайн с множеством строк чистой логики.
Этим постом, я начинаю серию, посвящённую разработке Telegram-бота на основе библиотеки AIOgram версии 3, и конечно, "от начала и до победного".
Почему я выбрал именно AIOgram 3, который в данный момент находится в стадии бета-тестирования? Именно по этой причине. К тому моменту, когда AIOgram 3 выйдет из бета-версии, у меня будет множество наработок по разработке, и это будет являться большим плюсом. Кроме того, он асинхронный и поддерживает FSM.
И чтобы сделать содержимое еще более интересным, посты о Django и боте будут переплетаться между собой. У меня в планах реализовать бота, который будет выдавать дополнительные материалы в ответ на запросы, а для удобного управления файлами бот будет обращаться к Django через API.
Я надеюсь, что это будет полезным и интересным.
Приступаем к работе.
Создаём новый проект в IDE и сразу же создаём файл
requirements.txt.Чтобы установить библиотеку, нужно выполнить следующую команду в терминале:
pip install -U --pre aiogram. Эта команда установит последнюю доступную бета-версию библиотеки.На данный момент актуальная версия AIOgram -
3.0.0b7.Добавляем ее в файл
requiremets.txt, копируем название и версию из вывода терминала, заменяя знак - на ==.Так как это бета-версия, Pycharm может считать, что указанная версия в requirements.txt не соответствует действительности. В этом случае нужно проигнорировать ошибку.
В следующем посте начнём делать бота.
Файлы к посту, можно получить в боте по коду: 347734
Пост на сайте.
Поддержать канал.
#aiogram #python #установка
👍3❤1🔥1
Код на салфетке pinned «Оглавление для серии постов по AIOgram3 Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения. AIOgram3 1. Начинаем создавать Telegram-бота AIOgram3 1.5. Регистрация бота AIOgram3 2. Точка входа AIOgram3…»
AIOgram3 1.5. Регистрация бота
Небольшой отход в сторону.
Для того, что бы наш бот мог обращаться к API Telegram, необходим ключ доступа, он же токен. Получить токен можно единственным способом, обратившись к официальному Telegram-боту
Приступим.
Переходим в диалог с ботом: @BotFather и нажимаем
Он выдаст длинное сообщение со списком доступных команд, нас интересует команда
Нажимаем на неё и получаем сообщение о необходимости ввода имени бота. Например:
Вводим.
Затем нас просят ввести имя пользователя для бота. Внимание! В конце имени пользователя, обязательно должно присутствовать слово bot! Например:
Вводим.
После ввода, получаем большое сообщение с поздравлением и необходимой информацией.
В сообщении от BotFather будет ссылка на бота, в моём случае это: https://t.iss.one/press_any_button_bot.
Также будет токен вида
На этом регистрация бота завершена и можно приступать к разработке.
Файлы к посту, можно получить в боте по коду: 456861
Пост на сайте.
Поддержать канал.
#aiogram #python #botfather #api_токен
Небольшой отход в сторону.
Для того, что бы наш бот мог обращаться к API Telegram, необходим ключ доступа, он же токен. Получить токен можно единственным способом, обратившись к официальному Telegram-боту
@BotFather.Приступим.
Переходим в диалог с ботом: @BotFather и нажимаем
Start или Запустить.Он выдаст длинное сообщение со списком доступных команд, нас интересует команда
/newbot. Нажимаем на неё и получаем сообщение о необходимости ввода имени бота. Например:
Бот на салфетке.Вводим.
Затем нас просят ввести имя пользователя для бота. Внимание! В конце имени пользователя, обязательно должно присутствовать слово bot! Например:
press_any_button_bot.Вводим.
После ввода, получаем большое сообщение с поздравлением и необходимой информацией.
В сообщении от BotFather будет ссылка на бота, в моём случае это: https://t.iss.one/press_any_button_bot.
Также будет токен вида
XXXXXXXXXX:xxxxxx...., его необходимо сохранить. ВНИМАНИЕ! Ни при каких обстоятельствах, не сообщайте данный токен НИКОМУ! И не публикуйте его в публичный репозиторий!На этом регистрация бота завершена и можно приступать к разработке.
Файлы к посту, можно получить в боте по коду: 456861
Пост на сайте.
Поддержать канал.
#aiogram #python #botfather #api_токен
❤1
AIOgram3 2. Точка входа
Для запуска бота, нам необходима
В этом файле находится главная функция, основные импорты, а так же регистрации действий пользователя.
Обо всём по порядку.
Начнём с простого эхо-бота создав точку входа.
В корне проекта создаём файл
Напишем условие запуска:
В первой строке мы импортировали библиотеку
Третья строка - это условие, которое проверяет, запущен ли данный скрипт как самостоятельное приложение. Если данный скрипт является основным файлом, то
В ней мы передаём функцию start(), которую начнём писать в следующем посте.
Таким образом, при выполнении данного кода, условие
Файлы к посту, можно получить в боте по коду: 389064
Пост на сайте.
Поддержать канал.
#aiogram #python #точка_входа #main #asyncio
Для запуска бота, нам необходима
точка входа, в качестве которой будет файл main.py.В этом файле находится главная функция, основные импорты, а так же регистрации действий пользователя.
Обо всём по порядку.
Начнём с простого эхо-бота создав точку входа.
В корне проекта создаём файл
main.py.Напишем условие запуска:
import asyncioДавайте разберём, что это такое и как работает.
if __name__ == '__main__':
asyncio.run(start())
В первой строке мы импортировали библиотеку
asyncio входящую в состав стандартной библиотеки. Она предоставляет простой и эффективный способ написания кода, который может обрабатывать множество задач одновременно, без блокировки потока исполнения. asyncio использует цикл событий, который обрабатывает различные задачи асинхронно и эффективно управляет ресурсами системы.Третья строка - это условие, которое проверяет, запущен ли данный скрипт как самостоятельное приложение. Если данный скрипт является основным файлом, то
__name__ примет значение __main__ , и условие входит в силу.asyncio.run() в четвёртой строке - это функция, которая запускает цикл событий asyncio, являющийся сердцем асинхронного программирования в Python. Она выполняет переданную ей корутину (функцию) и обрабатывает все события, пока она не завершится. В ней мы передаём функцию start(), которую начнём писать в следующем посте.
Таким образом, при выполнении данного кода, условие
if проверяет, запущен ли скрипт как основной файл, и если это так, используется asyncio.run() для запуска функции start(), содержащей асинхронный код.Файлы к посту, можно получить в боте по коду: 389064
Пост на сайте.
Поддержать канал.
#aiogram #python #точка_входа #main #asyncio
👍3
Поправка к посту Django 3. Базовая конфигурация
В посте допустил ошибку в описании путей к
Было так:
А должно быть так:
В первом варианте была передача пути от корня файловой системы, а нам нужен относительный путь от папки проекта.
Извиняюсь и прошу тех, кто повторял за мной, поправить данный момент.
В посте допустил ошибку в описании путей к
STATIC_ROOT и MEDIA_ROOT.Было так:
STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / '/static/'
MEDIA_URL = 'media/'
MEDIA_ROOT = BASE_DIR / '/media/'
А должно быть так:
STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'static/'
MEDIA_URL = 'media/'
MEDIA_ROOT = BASE_DIR / 'media/'
В первом варианте была передача пути от корня файловой системы, а нам нужен относительный путь от папки проекта.
Извиняюсь и прошу тех, кто повторял за мной, поправить данный момент.
👍2
AIOgram3 3. Основная функция
В прошлом посте мы написали точку входа и запуск из неё функции
Именно написанием этой функции и займёмся.
Между импортом и точкой входа, объявим функцию:
Не забываем про правила написания чистого кода - PEP8. Расставим по две пустых строки перед и после функции.
Как вы наверняка заметили, вместо стандартного
Ключевое слово
В теле функции объявим переменную
Далее нам необходимо создать объект класса
И наконец, необходимо запустить диспетчер в режиме "polling". Так называется бесконечный цикл "опроса" сервера(в нашем случае, сервера Telegram), на предмет новых сообщений или событий.
В следующем посте, сделаем эхо-бота и проверим работу.
Файлы к посту, можно получить в боте по коду: 627598
Пост на сайте.
Поддержать канал.
#aiogram #python #main #start #try_except
В прошлом посте мы написали точку входа и запуск из неё функции
start().Именно написанием этой функции и займёмся.
Между импортом и точкой входа, объявим функцию:
async def start():
Не забываем про правила написания чистого кода - PEP8. Расставим по две пустых строки перед и после функции.
Как вы наверняка заметили, вместо стандартного
def, мы используем async def.Ключевое слово
async указывает на то, что эта функция является корутиной, то есть функцией, которая может приостанавливать свое выполнение в течение определенного времени, чтобы выполнять другие задачи.В теле функции объявим переменную
bot и присвоим ей объект класса Bot, необходимый для взаимодействия с API Telegram: from aiogram import BotВ параметр
bot = Bot(token='ваш_токен')
token передаём полученный от BotFather токен. Стоит отметить, такая явная передача токена боту, является не безопасной. В следующих постах мы изменим передачу токена, а когда дойдём до развёртывания бота на сервере, я расскажу как правильно передавать секреты в бота.Далее нам необходимо создать объект класса
Dispatcher: from aiogram import Dispatcher
dp = Dispatcher()
Dispatcher() создает поток для обработки всех входящих запросов, проверяет тип запроса, извлекает все необходимые данные из запроса и передает их в соответствующий обработчик.И наконец, необходимо запустить диспетчер в режиме "polling". Так называется бесконечный цикл "опроса" сервера(в нашем случае, сервера Telegram), на предмет новых сообщений или событий.
try:В данном блоке используется конструкция
await dp.start_polling(bot)
finally:
await bot.session.close()
try-finally. Диспетчер будет работать до тех пор, пока не будет остановлен. После остановки диспетчера, будет выполнена команда закрытия сессии и выход их программы.В следующем посте, сделаем эхо-бота и проверим работу.
Файлы к посту, можно получить в боте по коду: 627598
Пост на сайте.
Поддержать канал.
#aiogram #python #main #start #try_except
👍2
AIOgram3 4. Эхо-бот
Для того, что бы сделать повторяющего за нами бота, давайте создадим функцию
Между импортами и функцией
В качестве ответа пользователю, мы отправляем его же сообщение. Текст ответа получим из переменной
Для того, что бы сделать повторяющего за нами бота, давайте создадим функцию
echo.Между импортами и функцией
start() создадим функцию:from aiogram.types import MessageВ теле функции напишем код ответа на сообщение:
async def echo(message: Message):
await message.answer(message.text)Переменная
message, переданная в функцию, является объектом класса Message. Мы, используя доступный нам метод answer, отвечаем пользователю, отправившему сообщение боту.В качестве ответа пользователю, мы отправляем его же сообщение. Текст ответа получим из переменной
message воспользовавшись ещё одним методом text, возвращающим текстовое представление данных.👍3❤1
Также, стоит упомянуть про
Ключевое слово
Таким образом,
Теперь нам необходимо зарегистрировать данную функцию.
В функции
Настало время запустить бота и проверить его работу. Запускаем файл
Поскольку у нас не инициализирован логгер и нет оповещения о запуске, то в терминале будет пусто, однако, если мы напишем боту... То он начнёт нам отвечать!
Для остановки бота, если он запущен в PyCharm, достаточно нажать на остановку.
Если бот запущен в терминале, то для остановки необходимо выполнить сочетание клавиш
Поздравляю, бот работает. В следующем посте начнём разграничивать функционал по модулям.
Файлы к посту, можно получить в боте по коду: 902691
Пост на сайте.
Поддержать канал.
#aiogram #python #эхо_бот #echo_bot
await.Ключевое слово
await используется только внутри асинхронной функции и только для вызова асинхронных операций. Оно используется с операциями, которые могут занять некоторое время. Поскольку эти операции требуют времени на выполнение, программа может продолжить выполнение других задач в это время, а затем вернуться к исходной задаче только после завершения асинхронной операции.Таким образом,
await в данном случае означает, что программа должна дождаться отправки сообщения, прежде чем продолжить дальнейшее выполнение кода.Теперь нам необходимо зарегистрировать данную функцию.
В функции
start(), после инициализации диспетчера, но до блока try-finally, регистрируем функцию, на приём всех сообщений:dp.message.register(echo)Обратите внимание! При регистрации функции, мы пишем только её название, без круглых скобок!
Настало время запустить бота и проверить его работу. Запускаем файл
main.py.Поскольку у нас не инициализирован логгер и нет оповещения о запуске, то в терминале будет пусто, однако, если мы напишем боту... То он начнёт нам отвечать!
Для остановки бота, если он запущен в PyCharm, достаточно нажать на остановку.
Если бот запущен в терминале, то для остановки необходимо выполнить сочетание клавиш
CTRL+C.Поздравляю, бот работает. В следующем посте начнём разграничивать функционал по модулям.
Файлы к посту, можно получить в боте по коду: 902691
Пост на сайте.
Поддержать канал.
#aiogram #python #эхо_бот #echo_bot
👍2❤1
Поговорим.
О пути, планах, стремлениях.
Приветствую.
Давайте поговорим с вами в комментариях.
Расскажите о вашем пути. Новичок или специалист? Или только-только притрагиваетесь к интересному миру программирования.
Какие у вас планы? Быть может амбиции огого!, через год быть топ-менеджером Газпрома, а может и планов нет, просто хобби?
Быть может у вас есть достижения, которыми вы хотите поделиться?
В общем, пишите, интересно будет почитать и обсудить.
О пути, планах, стремлениях.
Приветствую.
Давайте поговорим с вами в комментариях.
Расскажите о вашем пути. Новичок или специалист? Или только-только притрагиваетесь к интересному миру программирования.
Какие у вас планы? Быть может амбиции огого!, через год быть топ-менеджером Газпрома, а может и планов нет, просто хобби?
Быть может у вас есть достижения, которыми вы хотите поделиться?
В общем, пишите, интересно будет почитать и обсудить.
👍3
Оглавление для серии постов по Docker
Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.
Docker 1. Подготовка Windows
Docker 2.1 Установка Docker Desktop на Windows
Docker 2.2 Установка Docker на Linux
Docker 3. Контейнер с PostgreSQL
Docker 4. Взаимодействие с контейнером PostgreSQL
Docker 5.1 Почтовый сервер на Docker Mailserver - настройка домена
Docker 5.2 Почтовый сервер на Docker Mailserver - настройка и запуск
Docker 6. Собственный GIT-сервис - Гид по быстрому запуску Gitea на вашем сервере!
Docker 7. Разворачивание Telegram-бота в Docker на VPS
Docker 8. Разворачивание Django-проекта в Docker compose
Docker. Запуск бота-автоответчика по готовому образу
Docker ушёл из РФ! Как это исправить?
#docker #оглавление
Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.
Docker 1. Подготовка Windows
Docker 2.1 Установка Docker Desktop на Windows
Docker 2.2 Установка Docker на Linux
Docker 3. Контейнер с PostgreSQL
Docker 4. Взаимодействие с контейнером PostgreSQL
Docker 5.1 Почтовый сервер на Docker Mailserver - настройка домена
Docker 5.2 Почтовый сервер на Docker Mailserver - настройка и запуск
Docker 6. Собственный GIT-сервис - Гид по быстрому запуску Gitea на вашем сервере!
Docker 7. Разворачивание Telegram-бота в Docker на VPS
Docker 8. Разворачивание Django-проекта в Docker compose
Docker. Запуск бота-автоответчика по готовому образу
Docker ушёл из РФ! Как это исправить?
#docker #оглавление
🔥6👍1
