Также, стоит упомянуть про
Ключевое слово
Таким образом,
Теперь нам необходимо зарегистрировать данную функцию.
В функции
Настало время запустить бота и проверить его работу. Запускаем файл
Поскольку у нас не инициализирован логгер и нет оповещения о запуске, то в терминале будет пусто, однако, если мы напишем боту... То он начнёт нам отвечать!
Для остановки бота, если он запущен в 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
Docker 1. Подготовка Windows
Перед установкой
Docker подразумевает использование ядра Linux той системы, на которой он запущен, что избавляет от необходимости запуска виртуальных машин. Однако с Windows ситуация несколько отличается.
Так как Windows построена на совершенно иной архитектуре, для работы Docker необходимо либо использование виртуальной машины, либо нововведение в Windows 10 -
Это не виртуальная машина в прямом смысле. WSL запускает ядро Linux прямо внутри Windows. За счёт этого значительно экономятся ресурсы компьютера и повышается скорость работы Linux в системе.
Но так или иначе, для работы WSL требуется включение виртуализации.
Это можно сделать в BIOS, поискав информацию в интернете по вашей модели материнской платы/ноутбука. Стоит отметить, если у вас установлен и работает VirtualBox или, допустим. эмулятор Android, производить действия по включению не требуется, значит всё активировано и работает.
Перед установкой
Docker Desktop необходимо подготовить систему.Docker подразумевает использование ядра Linux той системы, на которой он запущен, что избавляет от необходимости запуска виртуальных машин. Однако с Windows ситуация несколько отличается.
Так как Windows построена на совершенно иной архитектуре, для работы Docker необходимо либо использование виртуальной машины, либо нововведение в Windows 10 -
Windows Subsystem for Linux, он же WSL.Это не виртуальная машина в прямом смысле. WSL запускает ядро Linux прямо внутри Windows. За счёт этого значительно экономятся ресурсы компьютера и повышается скорость работы Linux в системе.
Но так или иначе, для работы WSL требуется включение виртуализации.
Это можно сделать в BIOS, поискав информацию в интернете по вашей модели материнской платы/ноутбука. Стоит отметить, если у вас установлен и работает VirtualBox или, допустим. эмулятор Android, производить действия по включению не требуется, значит всё активировано и работает.
👍2
Далее необходимо включить подсистему Windows для Linux.
Запустите PowerShell от имени администратора. сделать это можно в меню "Пуск" > PowerShell > щелкните правой кнопкой мыши > Запуск от имени администратора.
И выполните следующую команду:
После перезагрузки, необходимо скачать и установить пакет обновления для WSL2.
Скачать пакет можно по ссылке: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
По завершении установки, снова запустите PowerShell и выполните следующую команду, для выбора WLS2 в качестве версии по умолчанию:
Отмечу от себя один момент. Не пренебрегайте установкой обновлений Windows. Именно там будут приходить обновления для WSL2. Да и в целом, обновления системы важная часть стабильной работы.
Файлы к посту, можно получить в боте по коду: 649348
Пост на сайте.
Поддержать канал.
#docker #windows #wsl #wsl2 #подготовка
Запустите PowerShell от имени администратора. сделать это можно в меню "Пуск" > PowerShell > щелкните правой кнопкой мыши > Запуск от имени администратора.
И выполните следующую команду:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartА затем обновить включенный WSL до WSL2 следующей командой:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartПосле этого перезапустите компьютер для завершения установки WLS2.
После перезагрузки, необходимо скачать и установить пакет обновления для WSL2.
Скачать пакет можно по ссылке: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
По завершении установки, снова запустите PowerShell и выполните следующую команду, для выбора WLS2 в качестве версии по умолчанию:
wsl --set-default-version 2На этом подготовка завершена.
Отмечу от себя один момент. Не пренебрегайте установкой обновлений Windows. Именно там будут приходить обновления для WSL2. Да и в целом, обновления системы важная часть стабильной работы.
Файлы к посту, можно получить в боте по коду: 649348
Пост на сайте.
Поддержать канал.
#docker #windows #wsl #wsl2 #подготовка
👍2
Docker 2.1 Установка Docker Desktop на Windows
Подготовка позади, приступаем к установке Docker Desktop на Windows.
Скачиваем установщик по ссылке: https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
Откроется одно из самых минималистичных окон установки.
Там будет два пункта:
- Use WSL 2 instead of Hyper-V - обязательный параметр, позволит запускать контейнеры через WSL, а не через создание виртуальной машины.
- Add shortcut to desktop - добавлять ярлык на рабочий стол или нет, выбирайте по желанию.
Отметив первую галочку, нажимаем "Ok".
Начнётся процесс установки. Ждём.
По завершении установки нажимаем на большую синюю кнопку с надписью "Close".
Установка завершена.
Подготовка позади, приступаем к установке Docker Desktop на Windows.
Скачиваем установщик по ссылке: https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
Откроется одно из самых минималистичных окон установки.
Там будет два пункта:
- Use WSL 2 instead of Hyper-V - обязательный параметр, позволит запускать контейнеры через WSL, а не через создание виртуальной машины.
- Add shortcut to desktop - добавлять ярлык на рабочий стол или нет, выбирайте по желанию.
Отметив первую галочку, нажимаем "Ok".
Начнётся процесс установки. Ждём.
По завершении установки нажимаем на большую синюю кнопку с надписью "Close".
Установка завершена.
👍3
Запустим Docker Desktop.
При первом запуске он попросит нас прочитать условия использования. Соглашаемся.
Далее будет опросник, можете поучавствовать, но я выбрал Skip.
Окно Docker Desktop можно закрыть. Убедитесь, что после закрытия окна, Docker остался в системном трее.
Пусть мы и установили Docker Desktop, работать мы будем в терминале, а именно в PowerShell.
Давайте убедимся, в корректности установки.
Запустим PowerShell и выполним команду:
Файлы к посту, можно получить в боте по коду: 743896
Пост на сайте.
Поддержать канал.
#docker #windows #установка #docker_desctop
При первом запуске он попросит нас прочитать условия использования. Соглашаемся.
Далее будет опросник, можете поучавствовать, но я выбрал Skip.
Окно Docker Desktop можно закрыть. Убедитесь, что после закрытия окна, Docker остался в системном трее.
Пусть мы и установили Docker Desktop, работать мы будем в терминале, а именно в PowerShell.
Давайте убедимся, в корректности установки.
Запустим PowerShell и выполним команду:
docker --versionВ ответ должны получить строку с текущей версией Docker. У меня это:
Docker version 24.0.2, build cb74dfcТеперь проверим работу контейнеров на стандартном контейнере
Hello-world. В терминале выполним команду:docker run hello-worldНачнётся процесс скачивания и запуска образа. Затем в выводе должно появиться много текста, начинающегося с "Hello from Docker!".
Файлы к посту, можно получить в боте по коду: 743896
Пост на сайте.
Поддержать канал.
#docker #windows #установка #docker_desctop
Docker 2.2 Установка Docker на Linux
Если с Windows приходится повозится для установки Docker, то с линуксом всё просто до безобразия.
Я использую Debian 12 и всё, что напишу ниже будет относиться к нему. Команды для вашего дистрибутива, можно найти в официальной документации Docker по ссылке: https://docs.docker.com/engine/install/
Если с Windows приходится повозится для установки Docker, то с линуксом всё просто до безобразия.
Я использую Debian 12 и всё, что напишу ниже будет относиться к нему. Команды для вашего дистрибутива, можно найти в официальной документации Docker по ссылке: https://docs.docker.com/engine/install/
👍3
Все действия выполняются в терминале. Откроем его.
Для начала удалим пакеты во избежание возможных конфликтов, выполнив следующую команду:
В следующем посте, расскажу, как запустить контейнер с PostgreSQL.
Файлы к посту, можно получить в боте по коду: 695131
Пост на сайте.
Поддержать канал.
#docker #установка #lunux #debian
Для начала удалим пакеты во избежание возможных конфликтов, выполнив следующую команду:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; doneДалее обновляем список доступных пакетов и устанавливаем поддержку HTTPS-репозиториев:
sudo apt-get updateУстанавливаем ключи сертификатов:
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyringsДобавляем репозиторий:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \Снова обновляем список доступных пакетов и устанавливаем Docker:
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get updateТеперь проверим работу контейнеров на стандартном контейнере
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Hello-world. В терминале выполним команду:sudo docker run hello-worldНачнётся процесс скачивания и запуска образа. Затем в выводе должно появиться много текста, начинающегося с "Hello from Docker!".
В следующем посте, расскажу, как запустить контейнер с PostgreSQL.
Файлы к посту, можно получить в боте по коду: 695131
Пост на сайте.
Поддержать канал.
#docker #установка #lunux #debian
👍3
Docker 3. Контейнер с PostgreSQL
После всех подготовок и установок, наконец-то переходим к полезной практике.
Сегодня мы запустим Docker-контейнер с PostgreSQL.
Для этого нам нужна всего одна команда, но перед этим, мы создадим папку, в которой будут храниться файлы базы данных.
Поскольку, данные в контейнере сбрасываются до начального состояния образа, при перезапуске контейнера, нам нужна локальная папка для хранения файлов базы. Создать папку можно в любом месте, главное, что бы в пути не было кириллических символов. У меня это
После всех подготовок и установок, наконец-то переходим к полезной практике.
Сегодня мы запустим Docker-контейнер с PostgreSQL.
Для этого нам нужна всего одна команда, но перед этим, мы создадим папку, в которой будут храниться файлы базы данных.
Поскольку, данные в контейнере сбрасываются до начального состояния образа, при перезапуске контейнера, нам нужна локальная папка для хранения файлов базы. Создать папку можно в любом месте, главное, что бы в пути не было кириллических символов. У меня это
D:\psql.👍1
Команда запуска:
-
-
-
Внимание! Если у вас установлен PostgreSQL в системе вне Docker, значит порт 5432 занят. Изменяем <порт_вне_контейнера> на другой, например, 5433.
-
-
-
-
-
-
-
- В самом конце команды определяем используемый базовый образ и его версию. Без указания версии, будет использоваться последняя доступная версия. В нашем случае, мы будем использовать официальный Docker-образ
Давайте выполним эту большую команду в терминале. Для запуска на Windows, убедитесь, что у вас запущен Docker Desktop
Начнётся скачивание базового образа из
Для остановки контейнера, нужно выполнить команду:
Файлы к посту, можно получить в боте по коду: 921886
Пост на сайте.
Поддержать канал.
#docker #postgresql #postgres #sql #установка #контейнер
docker run --name postgres-db -p 5432:5432 -e POSTGRES_USER=username -e POSTGRES_PASSWORD=password -e POSTGRES_DB=testdb -e PGDATA=/var/lib/postgresql/data/pgdata -v D:\psql:/var/lib/postgresql/data -d postgres:15.2Разберём по порядку:
-
docker run - команда Docker для запуска контейнера.-
--name - параметр определяющий имя контейнера для более удобного взаимодейсвтия с ним, в нашем случае это postgres-db.-
-p - параметр publish, определяет какой внутренний порт будет транслироваться из контейнера. Синтаксис <порт_вне_контейнера>:<порт_в_контейнере>. В нашем случае это стандартный порт PostgreSQL - 5432.Внимание! Если у вас установлен PostgreSQL в системе вне Docker, значит порт 5432 занят. Изменяем <порт_вне_контейнера> на другой, например, 5433.
-
-e - параметр передающий в контейнер переменные окружения. В нашем случае это:-
POSTGRES_USER - определяет имя пользователя БД.-
POSTGRES_PASSWORD - определяет пароль БД.-
POSTGRES_DB - определяет название БД.-
PGDATA - определяет место, где БД будет хранить данные.-
-v - параметр volume, необходим для подключения внешней(вне контейнера) директории, по внутреннему(в контейнере) пути. В моём случае это - D:\psql:/var/lib/postgresql/data, где D:\psql директория на моём компьютере, а /var/lib/postgresql/data место хранения данных в контейнере.-
-d - параметр сообщающий докеру, что мы хотим запустить контейнер в режиме демона, т.е. в фоновом режиме.- В самом конце команды определяем используемый базовый образ и его версию. Без указания версии, будет использоваться последняя доступная версия. В нашем случае, мы будем использовать официальный Docker-образ
postgres версии 15.2Давайте выполним эту большую команду в терминале. Для запуска на Windows, убедитесь, что у вас запущен Docker Desktop
Начнётся скачивание базового образа из
Docker Hub. После скачивания и запуска, терминал вернётся в режим ввода пользователя. Если не было никаких ошибок, значит контейнер запущен успешно. Убедиться в этом можно выполнив команду:docker ps -aМы должны увидеть два контейнера.
Hello-world, который мы запускали в прошлом посте и наш свеже-созданный postgres-db. В колонке STATUS в строке с БД, должно быть написано Up X minutes. Контейнер запущен и функционирует корректно.Для остановки контейнера, нужно выполнить команду:
docker stop postgres-dbА для запуска остановленного контейнера:
docker start postgres-dbВ следующем посте, расскажу про способы подключения к БД.
Файлы к посту, можно получить в боте по коду: 921886
Пост на сайте.
Поддержать канал.
#docker #postgresql #postgres #sql #установка #контейнер
🔥3👍1
Docker 4. Взаимодействие с контейнером PostgreSQL
Контейнер запустили, теперь давайте научимся с ним взаимодействовать.
Самый прямой способ взаимодействия, это зайти в контейнер и подключиться к CLI(Command Line Interface) PostgreSQL. Проще говоря, подключиться к БД в терминале.
Для этого необходимо в терминале выполнить следующую команду:
Для варианта запуска, показанного в прошлом посте, строка будет выглядеть так:
Контейнер запустили, теперь давайте научимся с ним взаимодействовать.
Самый прямой способ взаимодействия, это зайти в контейнер и подключиться к CLI(Command Line Interface) PostgreSQL. Проще говоря, подключиться к БД в терминале.
Для этого необходимо в терминале выполнить следующую команду:
docker exec -it <container-name> psql -U <dataBaseUserName> <dataBaseName>
Для варианта запуска, показанного в прошлом посте, строка будет выглядеть так:
docker exec -it postgres-db psql -U username testdb
Подробнее про каждый пункт:
-
-
-
-
-
В итоге команда должна выглядеть следующим образом:
Для выхода достаточно ввести команду
Другой способ подключиться к БД, это использовать менеджеры баз данных.
Таких программ много, например PgAdmin, DBeaver и другие.
Установив любой менеджер поддерживающий PostgreSQL, для подключения к БД необходимо указать следующие данные:
-
-
-
Точно так же, можно использовать запущенную БД в наших проектах, например в Django:
Файлы к посту, можно получить в боте по коду: 684611
Пост на сайте.
Поддержать канал.
#docker #postgresql #postgres #sql #контейнер
-
docker exec - комманда позволяющая зайти в контейнер и выполнить указанную далее команду.-
-it - параметр, сообщающий докеру, что мы хотим подключиться в интерактивном режиме. Бывают случаи, когда терминал занят другим приложением, например выводом запущенного бота и чтобы выйти из контейнера не завершая работу запущенного приложения, необходимо нажать сочетание клавиш CTRL+Q+CTRL+P-
<container-name> - имя или идентификатор контейнера, к которому хотим подключиться-
psql - команда для выполнения в контейнере. В нашем случае это подключение к PostgreSQL в консоли.-
-U <dataBaseUserName> <dataBaseName> - параметры предыдущей команды. Тут мы передаём флаг -U, указывающий, что далее будет введено имя пользователя для авторизации и имя базы данных к которой необходимо подключиться.В итоге команда должна выглядеть следующим образом:
docker exec -it postgres-db psql -U username testdbТак, мы попадём в консольный интерфейс PostgreSQL. Можно работать с БД.
Для выхода достаточно ввести команду
exit.Другой способ подключиться к БД, это использовать менеджеры баз данных.
Таких программ много, например PgAdmin, DBeaver и другие.
Установив любой менеджер поддерживающий PostgreSQL, для подключения к БД необходимо указать следующие данные:
-
host: localhost
- port: 5432
- username: username-
password: password-
database: testdbТочно так же, можно использовать запущенную БД в наших проектах, например в Django:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': testdb,
'USER': username,
'PASSWORD': password,
'HOST': 'localhost',
'PORT': '5432',
}
}
На этом всё. Если возникнут вопросы по данной теме, не стесняйтесь задавать их в комментариях, обязательно постараюсь ответить.Файлы к посту, можно получить в боте по коду: 684611
Пост на сайте.
Поддержать канал.
#docker #postgresql #postgres #sql #контейнер
👍2
Django 5. Инициализация приложения блога
Я не просто так назвал данный пост "Инициализация приложения блога". В Django, проектом считается сам установленный и инициализированный Django. Этим мы занимались во втором посте. А вот страницы сайта или отдельные модули называются приложениями. Именно созданием приложения мы займемся сегодня.
Для создания приложения необходимо в терминале выполнить команду:
В папке с проектом появилась директория
Я не просто так назвал данный пост "Инициализация приложения блога". В Django, проектом считается сам установленный и инициализированный Django. Этим мы занимались во втором посте. А вот страницы сайта или отдельные модули называются приложениями. Именно созданием приложения мы займемся сегодня.
Для создания приложения необходимо в терминале выполнить команду:
python manage.py startapp blog. Убедитесь, что в терминале вы находитесь в той же директории, что и файл manage.py. В дальнейшем я не буду заострять на этом внимание. В папке с проектом появилась директория
blog с набором пустых файлов приложения.🔥2
Пройдёмся по основным файлам приложения:
- Файл
- Папка
- Файл
- Файл
- В дальнейшем будут созданы и другие файлы разной функциональной направленности.
Приложение создано, но ещё не активировано. Для активации необходимо вернуться в файл
Первый параметр
Второй параметр
Третий параметр
Далее принято делать модели базы данных, но я несколько отойду от принятого. В следующем посте сделаем заготовку для главной страницы, она же, по началу будет выступать в роли заглушки сайта.
Файлы к посту, можно получить в боте по коду: 966714
Пост на сайте.
Поддержать канал.
#django #python #приложение
- Файл
admin.py - в данном файле будем указывать всё, что непосредственно связано с панелью администратора. В основном, это регистрация моделей.- Папка
migrations - в ней будут собираться файлы с описаниями миграций базы данных, относящихся именно к приложению.- Файл
models.py - в данном файле будем описывать модели и менеджеров базы данных.- Файл
views.py - в данном файле описываются представления соответствующие страницам на сайте. - В дальнейшем будут созданы и другие файлы разной функциональной направленности.
Приложение создано, но ещё не активировано. Для активации необходимо вернуться в файл
settings.py и в параметр INSTALLED_APPS добавить строку с указанием конфигурации приложения.INSTALLED_APPS = [Как мы получили данную строку?
# Содержимое списка
# ...
'blog.apps.BlogConfig',
]
Первый параметр
blog - название приложения, указанное при его создании. Второй параметр
apps - указание на файл apps.py в директории приложения. Третий параметр
BlogConfig - указание на класс BlogConfig в упомянутом ранее файле.Далее принято делать модели базы данных, но я несколько отойду от принятого. В следующем посте сделаем заготовку для главной страницы, она же, по началу будет выступать в роли заглушки сайта.
Файлы к посту, можно получить в боте по коду: 966714
Пост на сайте.
Поддержать канал.
#django #python #приложение
👍3
Django 6. Базовый шаблон
Сегодня мы создадим базовый шаблон. В базовый шаблон прописывается то, что должно быть на всех страницах сайта. Подключаются все необходимые файлы стилей и скриптов, прописываются мета-теги.
Для создания шаблона, мы будем использовать CSS-фреймворк Bootstrap5.
Давайте его скачаем. Нам нужен CSS-файл и JS-файл.
CSS: https://bootswatch.com/5/lumen/bootstrap.css
JS: https://raw.githubusercontent.com/twbs/bootstrap/v5.3.0/dist/js/bootstrap.bundle.js
Если у вас в браузере, файл не скачивается, а открылся для просмотра, просто нажмите сочетание клавиш CTRL+S
Сегодня мы создадим базовый шаблон. В базовый шаблон прописывается то, что должно быть на всех страницах сайта. Подключаются все необходимые файлы стилей и скриптов, прописываются мета-теги.
Для создания шаблона, мы будем использовать CSS-фреймворк Bootstrap5.
Давайте его скачаем. Нам нужен CSS-файл и JS-файл.
CSS: https://bootswatch.com/5/lumen/bootstrap.css
JS: https://raw.githubusercontent.com/twbs/bootstrap/v5.3.0/dist/js/bootstrap.bundle.js
Если у вас в браузере, файл не скачивается, а открылся для просмотра, просто нажмите сочетание клавиш CTRL+S
👍3
В директории приложения
Помещаем скачанные файлы в соответствующие папки в директории
В директории приложения
Должна получиться такая иерархия
Директория
Тэг
В месте, где мы подключаем CSS и JS файлы, используется тег
Это будет наш базовый шаблон. В последствии мы его модернизируем и от него будут наследоваться шаблоны других страниц. В следующем посте, пропишем представление для него и добавим маршрутизацию URL-адресов и протестируем.
Файлы к посту, можно получить в боте по коду: 153069
Пост на сайте.
Поддержать канал.
#django #python #шаблон #базовый_шаблон #html #css #bootstrap
blog создаём папку static, а в ней ещё две папки css и js.Помещаем скачанные файлы в соответствующие папки в директории
static.В директории приложения
blog, создаём папку templates, а в ней папку с названием приложения, то есть, тоже blog.Должна получиться такая иерархия
<проект>/blog/templates/blog. Если вы использовали иное название для приложения, то замените `blog`, на соответствующее.Директория
blog в папке templates, это место, где будут храниться шаблоны связанные с приложением blog. Создадим там файл base.html со следующим содержимым:{% load static %}
<!DOCTYPE html>
<html lang="ru" data-bs-theme="dark" class="h-100">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Press Any Button</title>
<link href="{% static "css/bootstrap.css" %}" rel="stylesheet">
</head>
<body class="d-flex flex-column h-100">
<section class="al mt-3">
<div class="container justify-content-center">
<div class="alert alert-dismissible alert-warning">
<h4 class="alert-heading">Приветствую вас!</h4>
<h5 class="mb-0">Сайт находится в процессе разработки.<br>
Следить за процессом разработки и повторять действия, можно в <a href="https://t.iss.one/press_any_button">Telegram-канале
"Код на салфетке"</a></h5>
</div>
</div>
</section>
<script src="{% static "js/bootstrap.bundle.js" %}"></script>
</body>
</html>
Как видим, используется обычная HTML-разметка, с добавление специальных Django-тегов.Тэг
{% load static %} сообщает Django, что в шаблоне используются статические файлы из папки static.В месте, где мы подключаем CSS и JS файлы, используется тег
{% static "путь_до_файла_в_папке_static" %} Это будет наш базовый шаблон. В последствии мы его модернизируем и от него будут наследоваться шаблоны других страниц. В следующем посте, пропишем представление для него и добавим маршрутизацию URL-адресов и протестируем.
Файлы к посту, можно получить в боте по коду: 153069
Пост на сайте.
Поддержать канал.
#django #python #шаблон #базовый_шаблон #html #css #bootstrap
👍5
Django 7. Первое представление
В интернете всё построено на запросах. Открывая любую страницу, мы делаем запрос к серверу "хочу попасть на такую-то страницу", а сервер уже обрабатывает его и возвращает ответ на запрос с содержимым страницы.
Для формирования ответа на запрос с доступом к той или иной странице в Django отвечают, так называемые "представления", они же "views".
Давайте создадим наше первое простое представление, для возврата содержимого базового шаблона посетителю сайта.
Переходим в файл
Под имеющимся в файле импортом добавим функцию со следующим кодом:
Поскольку у нас пока заглушка и данные передавать нам никакие не нужно, сразу переходим к возврату ответа пользователю. За это отвечает функция
В интернете всё построено на запросах. Открывая любую страницу, мы делаем запрос к серверу "хочу попасть на такую-то страницу", а сервер уже обрабатывает его и возвращает ответ на запрос с содержимым страницы.
Для формирования ответа на запрос с доступом к той или иной странице в Django отвечают, так называемые "представления", они же "views".
Давайте создадим наше первое простое представление, для возврата содержимого базового шаблона посетителю сайта.
Переходим в файл
views.py расположенный в директории приложения.Под имеющимся в файле импортом добавим функцию со следующим кодом:
def index(request):Мы создали представление
return render(request,
'blog/base.html')
index, получающего запрос от пользователя.Поскольку у нас пока заглушка и данные передавать нам никакие не нужно, сразу переходим к возврату ответа пользователю. За это отвечает функция
render, в которую мы передаём запрос, а так же путь до файла шаблона.👍3
Теперь получив запрос на отображение главной страницы сайта, Django вернёт её содержимое. Только вот Django, пока ничего не знает, о том, где у нас главная страница и как строить маршрутизацию по URL-адресам.
В директории приложения создадим файл
Файл
Добавим следующий код:
В переменную
В неё передаём:
- Первым параметром URL-паттерн. Пустые кавычки означают, что паттерн будет применён к основному адресу сайта, например
- В третьем параметре указываем имя для пути.
Также обратите внимание на вторую строку импорта, замените blog на имя вашего приложения
Теперь, надо сообщить Django о том, что у нас есть приложение со своим набором URL-паттернов. Для этого, перейдём в директорию проекта и откроем файл
Там уже будет переменная
Добавим в имеющийся список новую строку с адресами приложения:
И сразу добавим сюда определение путей для медиа и статических файлов. В этом же файле, только ниже добавьте следующие строки:
Должна отобразиться страница с заглушкой. Такая-же как https://pressanybutton.ru
В следующем посте, начнём делать структуру Telegram-бота
Файлы к посту, можно получить в боте по коду: 772660
Пост на сайте.
Поддержать канал.
#django #python #представление #views #render #url_паттерны
В директории приложения создадим файл
urls.py.Файл
urls.py в Django имеет важное значение. Он определяет, как URL-запросы будут соотноситься с определенными представлениями и функциями. В этом файле определяются URL-шаблоны, которые связывают входящие URL-запросы с соответствующими представлениями. Представления обрабатывают запросы и возвращают соответствующие HTTP-ответы.Добавим следующий код:
from django.urls import pathВ переменной
from blog import views
app_name = 'blog'
urlpatterns = [
path('', views.index, name='index'),
]
app_name указываем имя приложения, для корректного сопоставления URL-адресов.В переменную
urlpatterns присваиваем список. Внутри списка вфзфывем функцию path, формирующую маршрут и URL-адрес. В неё передаём:
- Первым параметром URL-паттерн. Пустые кавычки означают, что паттерн будет применён к основному адресу сайта, например
pressanybutton.ru, а если пропишем "blog", тогда он будет срабатывать, когда будем переходить по адресу pressanybutton.ru/blog
- Вторым параметром указываем, какое представление необходимо вызвать при запросе данного адреса.- В третьем параметре указываем имя для пути.
Также обратите внимание на вторую строку импорта, замените blog на имя вашего приложения
Теперь, надо сообщить Django о том, что у нас есть приложение со своим набором URL-паттернов. Для этого, перейдём в директорию проекта и откроем файл
urls.py.Там уже будет переменная
urlpatterns с прописанным паттерном панели администратора.Добавим в имеющийся список новую строку с адресами приложения:
from django.urls import path, includeВ данной строке, мы сообщаем Django, что по пути сайта мы будем использовать URL-паттерны из приложения.
urlpatterns = [
# ...
path('', include('blog.urls', namespace='blog')),
]
И сразу добавим сюда определение путей для медиа и статических файлов. В этом же файле, только ниже добавьте следующие строки:
from django.conf.urls.static import staticЗапустим Django командой
from django.conf import settings
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
python manage.py runserver и перейдём на страницу.Должна отобразиться страница с заглушкой. Такая-же как https://pressanybutton.ru
В следующем посте, начнём делать структуру Telegram-бота
Файлы к посту, можно получить в боте по коду: 772660
Пост на сайте.
Поддержать канал.
#django #python #представление #views #render #url_паттерны
👍3
AIOgram3 5.1. Создание структуры
Большинство проектов не ограничиваются одним лишь файлом
Создадим основной пакет
Если, вы работаете в PyCharm или другой Python-направленной IDE, то достаточно в контекстном меню директории выбрать "New - Python Package".
Но создать пакет можно и вручную.
Для этого необходимо создать директорию с необходимым именем пакета. Внутри директории создать пустой файл
При каждом создании пакета, необходимо создавать внутри пустой файл __init__.py
Большинство проектов не ограничиваются одним лишь файлом
main.py, напротив, часто проекты состоят из множества файлов с кодом конкретной логики. Для этого в Python предусмотрена "пакетная" система. Пакет является директорией, которая содержит в себе модули и подпакеты. Он позволяет логически объединять связанный функционал и предоставляет простой способ управления зависимостями и кодом в рамках проекта.Создадим основной пакет
botlogic со всей будущей логикой.Если, вы работаете в PyCharm или другой Python-направленной IDE, то достаточно в контекстном меню директории выбрать "New - Python Package".
Но создать пакет можно и вручную.
Для этого необходимо создать директорию с необходимым именем пакета. Внутри директории создать пустой файл
__init__.py. Данный файл сообщит интерпретатору, что директория является пакетом.При каждом создании пакета, необходимо создавать внутри пустой файл __init__.py
👍3