django
June 10, 2022

Работа с backend-сервером на Django(Python)


Первоначальная настройка среды

Установка Python на локальный компьютер

  • Установка Python на Windows:

Python.org (пояснение в видео ⬆️) - требуется установить Python 3.9.* (*-любую версию 3.9)

  • Установка Python на Mac:

Python.org (пояснение в видео ⬆️) - требуется установить Python 3.9.* (*-любую версию 3.9)

Установка Docker, Docker-compose на локальный компьютер

  • Установка Docker, Docker-compose на Windows:
Установка Docker и Docker-compose
  • Установка Docker, Docker-compose на Mac:
Установка Docker и Docker-compose

Установка Git на локальный компьютер и его первая настройка

  • Установка и настройка Git на Windows:
Установка и настройка Git
  • Установка и настройка Git на Mac:
Установка и настройка Git

Первый локальный запуск проекта

Клонирование репозитория с кодом проекта на локальный компьютер

Данный пункт предполагает, что уже установлены: Git, Python, Docker и Docker-compose (если это требуется).

Переходим в папку с проектами и нажав на правую кнопку мыши, открываем Git Bash (или терминал в MacOS и Linux).

Если на Windows, первая команда: git init

Страница проекта
Выбираем Code
Копируем адрес

Далее клонируем код проекта на свой компьютер: git clone {сюда подставить адрес}

Создание виртуального окружения для проекта

Переходим в папку с проектом и запускаем в ней терминал:

Windows - https://alpinefile.ru/open-cmd-explorer-windows-10.html
Mac - https://qna.habr.com/q/425895
Linux - ctrl + alt + T

Создаём виртуальное окружение для Python (командой в терминале):

Windows - python -m pip install virtualenv -> python -m pip install virtualenvwrapper-win -> mkvirtualenv venv
Mac - sudo pip3 install virtualenv , а потом virtualenv venv -p python3
Linux - pip3 install virtualenv , а потом python -m venv venv

Если всё прошло без ошибок, в папке с проектом появится папка с названием venv

Запуск проекта на Django локально в первый раз

Для запуска проекта, нужно активировать виртуальную среду Python (в терминале - в папке с проектом):

Windows - venv\Scripts\activate.bat
Mac - source venv/bin/activate
Linux - source venv/bin/activate

Устанавливаем все зависимости командой pip install -r requirements.txt

*Если в проекте используется Docker, собираем контейнеры командой:

docker-compose up --build -d

Создаём базу данных (опционально) командой python manage.py migrate

Запускаем сервер Django командой python manage.py runserver

Повседневная работа с локальным проектом

Получение последней версии проекта с помощью Git и запуск сервера

Перед началом работы над проектом, требуется провести несколько небольший действий, чтобы активировать сервер (это делается один раз перед началом работы)

Сначала, нам нужно получить последнюю версию проекта, так как другие члены команды могли внести критически важные изменения в код проекта. Для этого нам нужно открыть Git Bash или Terminal в папке проекта и ввести команду:

git pull origin master

Для запуска проекта, нужно активировать виртуальную среду Python (в терминале - в папке с проектом):

Windows - venv\Scripts\activate.bat
Mac - source venv/bin/activate
Linux - source venv/bin/activate

Проект либо обновиться, либо предупредит, что изменений нет. Могут понадобиться миграции, если на стороне Backend были внесены изменения в базу данных. Для применения этих изменений нужно ввести команду (заранее спросите у backend разработчика, были ли изменения):

python manage.py migrate

Осталось запустить сервер и начать работу: python manage.py runserver

Внесение и отправка изменений в проекте с помощью Git

Когда работа была проведена (к концу дня например), нужно отправить изменения в коде всем участникам проекта. Сделать это довольно просто:

Сначала нужно зафиксировать изменения (или сделать commit). Для этого используется команда git commit -a -m "Текст коммита, который отражает краткую суть изменений, которые вы внесли, например - 'Create home page'"

После чего, нужно отправить изменения на сервер Git всего одной командой:

git push origin master

Поздравляю! Можно выключать проект и спать спокойно до следующего раза =)

p.s. Когда приступаете в следующий раз к работе, пользуйтесь этим двумя пунктами в начале и в конце работы. Успехов!

Особенности Django при работе с HTML, CSS и JavaScript

Есть несколько важных особенностей при работе с HTML, CSS и JavaScript в Django-проекте - местоположение файлов (static, media, pages), собственные HTML-теги.

Местоположение файлов

Итак. Для разработки важно понимание того, куда кладутся файлы HTML в проекте. В Django существует система шаблонов. В зависимост от причастности к определенному приложению, они храняться в разных местах. Но тут существует вполне понятная иерархия, которое мы будем следовать. В качестве примера, возьмем основные страницы сайта (главная, контакты, о нас и т.д.). Чаще всего, в проекте для подобного приложения используется название core

Пример структуры проекта

В данном случае, внутри приложения (папка core), есть папка templates.

Пример структуры проекта

В этой папке храняться основные страницы и в том числе самая главная - base.html. Эта страница представляет из себя базовый шаблон с универсальными для всех страниц элементами - header, footer, css-стили для всех страниц. Все остальные страницы наследуются от этой, во избежание дублирования кода. Об этом чуть позже опишу подробнее.

Пример структуры проекта

Остальные папки и файлы в core разбиваются по усмотрению. В данном случае я выделил сервисные страницы и шаблоны для email-рассылок, т.к. это общие элементы для всего проекта. В отдельных приложениях это выглядит немного иначе, но идея та же. Возьмем например приложение user

Пример структуры проекта

В нем также есть папка templates. В ней будет храниться еще одна папка user, потому что для Django - все папки templates считаются одной. И так он логически разбивает эти папки по проектам.

Пример структуры проекта

И уже внутри этой папки, храняться файлы, которые относятся только к работе пользователей. Для удобства, обычно создают файл base_{название проекта}.html, который наследуется от base.html и может нести в себе какую-то особенность, но в небольших проектах это не обязательно.

СТАТИЧНЫЕ ФАЙЛЫ

Все статичные файлы (CSS-файлы, JavaScript-файлы) храняться в папке static в корне проекта. Там и стоит эти файлы размещать, для корректной загрузки в HTML-страницы.

Пример структуры проекта

Папка media предусмотрена для динамических данных, которые приходят на сервер извне (например фото пользователей).

Работа с Django-templates (особые HTML-теги Django)

Хорошо описаны в документации.