Skip to content

zhekan4ik2001/sportcomplex

Repository files navigation

Оглавление

Сказ о том, как сервер поднять

Виртуальная среда

База данных

Создание аккаунта администратора сайта

Заполнение таблиц базовой информацией

Создание сертификатов (для HTTPS)

Запуск сервера

Внесение изменений в модель

Обновление переводов

Сказ о том, как сервер поднять

Виртуальная среда

Благодаря виртуальной среде приложение может запускаться независимо от других приложений на Python. Для создания среды необходимо установить пакет virtualenv.

pip install virtualenv

Затем необходимо в отедльной папке (вне проекта) создать эту самую виртуальную среду.

virtualenv SportComplex_env

Для активации вирутальной среды нужно:

  • На Windows ввести команду:
    "SportComplex_env/Scripts/activate"
    
  • На Lunix ввести команду:
    source SportComplex_env/bin/activate
    

При успешном выполении команды командная строка будет включать в начале название среды в скобочках, например (SportComplex_env) D:\projects\5sem>. Деактивируется среда командой deactivate. Перейти в проект можно командой:

cd sportcomplex

Все необходимые перечислены в requirements.txt и устанавливаются внутри виртуальной среды. Их установка:

pip install -r requirements.txt

Версия Django 4.1 работает с PostgreSQL 11, а с версии 4.2 уже необходимо иметь версию не старее 12-й.

База данных

Для работы сервера понадобится база данных, создаваемая в PostgreSQL. Можно запустить psql в консоли или пользоваться графическим приложением pgAdmin. На linux команды исполоняются от пользователя postgres.

CREATE DATABASE sportcomplex_database;

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

CREATE USER sportcomplex_admin WITH PASSWORD '12345678';

Конфигурирование пользователя:

ALTER ROLE sportcomplex_admin SET client_encoding TO 'utf8';
ALTER ROLE sportcomplex_admin SET default_transaction_isolation TO 'read committed';
ALTER ROLE sportcomplex_admin SET timezone TO 'UTC';

Выдача прав на работу с ранее созданной базой данных:

GRANT ALL PRIVILEGES ON DATABASE sportcomplex_database TO sportcomplex_admin;

Теперь нужно произвести миграцию(внесение изменений моделей в базу данных). Команды выполняются в директории проекта:

python manage.py makemigrations
python manage.py migrate

Если на первой команде появилась ошибка permission denied, то для PostgreSQL это исправляется командой: ALTER DATABASE sportcomplex_database OWNER TO sportcomplex_admin;

Создание аккаунта администратора сайта

python manage.py createsuperuser

Будут запрошены имя пользователя, почта и пароль.

Заполнение таблиц базовой информацией

Выполняется командой:

python manage.py loaddata basic_data.json

Создание сертификатов (для HTTPS)

В репозитории утилиты на Гитхабе есть инструкции по установке на все операционные системы. Скачайте бинарный файл из Releases и переименуйте его в mkcert.exe. Дальше откройте командную строку от имени Администратора, перейдите в папку с этим файлом и выполните:

mkcert -install

Если ошибок не было, в результате в консоли будет следующее: Created a new local CA The local CA is now installed in the system trust store! Note: Firefox support is not available on your platform.

Далее необходимо сгенерировать сертификат для домена localhost командой:

mkcert -cert-file cert.pem -key-file key.pem localhost 127.0.0.1

В папке где находится утилита mkcert были созданы файлы cert.pem и key.pem, их нужно скопировать в папку с проектом Django на одном уровне с manage.py.

Запуск сервера

Запуск HTTP: На Windows необходимо в Брандмауэре открыть порт 8000. После открытия порта нужно перейти в директорию проекта и применить команду запуска сервера:

python manage.py runserver

Запуск HTTPS: На Windows необходимо в Брандмауэре открыть порт 443. После открытия порта нужно перейти в директорию проекта и применить команду запуска сервера:

python manage.py runsslserver --certificate cert.pem --key key.pem 127.0.0.1:443

Внесение изменений в модель

Если изменения не являются критичными, будет достаточно ввести команды:

python manage.py makemigrations
python manage.py migrate

Иначе при попытке внесения изменений возникают ошибки на подобие django.db.utils.ProgrammingError: column "client_id" of relation "application_club_client" does not exist то необходимо пересоздать таблицы в базе данных. Для этого сохраните их содержимое, а затем выполните следующее:

  1. Удалите папку application/migrations;
  2. Выполните команду DELETE FROM django_migrations WHERE app = 'application' в psql;
  3. Выполните удаление таблиц с помощью кода:
DO
$do$
DECLARE
    row record;
BEGIN
    FOR row IN 
        SELECT table_name
        FROM information_schema.tables
        WHERE table_type = 'BASE TABLE'
        AND table_schema = 'public'
        AND table_name ILIKE ('application_' || '%')
    LOOP
        EXECUTE 'DROP TABLE ' || 'public.' || quote_ident(row.table_name) || ' CASCADE ';
        RAISE INFO 'Dropped table: %', 'public.' || quote_ident(row.table_name);
    END LOOP;
END;
$do$;
  1. Создайте модели в базе данных:
python manage.py makemigrations application
python manage.py migrate application

Если ошибки всё равно возникают, придётся пересоздавать базу данных, супер-пользователя и назначить соответсвующие права.

Обновление переводов

Переводы в файлы .py проекта добавляются с помощью обёртки _(<id>), где id это идентификатор переводимого текста и одновременно текст по стандарту(английский). На странице текст для перевода помечается тэгом {% trans <id> %}, например <title>{% trans 'Sport Complex' %}</title>. Обновление файла перевода (например, для русского языка) осуществляется командой:

django-admin makemessages -l ru_RU

Создадится файл django.po в locale/ru_RU/LC_MESSAGES. В нём записаны все места, где установлена обёртка _(<id>) или тэг. В этом файле необходимо в строке с меткой msgstr вписать перевод (например, на русский). В результате будет подобное:

#: .\application\templates\base_template.html:7
msgid "Sport Complex"
msgstr "Спорт-комплекс"

Когда все переводы вписаны в файл, выполните команду компиляции переводов:

django-admin compilemessages

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published