Создание сайта на Python/Django: настройка базы данных проекта

Продолжаем создание сайта на Django. В прошлой публикации мы создали свой первый View в проекте и заставили его что-то выводить в браузер при запросе. Далее мы продолжим развивать наш проект. Конечно, пока что нам еще далеко до того, чтобы создать что-то вроде crm салона красоты, которая позволяет обеспечивать эффективное управление процессами в соответствующем бизнесе и максимально их автоматизировать. Будем учится, чтобы рано или поздно суметь построить систему автоматизации и учета под свои цели. Пока же настроим базу данных нашего проекта на Django и обеспечим работу установленных приложений.

Настраиваем базу данных Django проекта

Для этого откроем файл настроек mysite/settings.py. В данном файле содержатся настройки Django. По умолчанию в конфигурации Django используется тип базы данный SQLite. Если вы новичок в базах данных, то это самый простой способ опробовать работу Django. SQLite включен в Python, поэтому у нас не никакой необходимости что либо устанавливать для обеспечения работоспособности базы данных нашего проекта. Однако, позже, когда вы захотите реализовать свой первый реальный проект, то вы лучше использовать более масштабируемую базу данных, например, PostgreSQL с первых шагов реализации проекта, чтобы не иметь проблем с переключением базы данных.

Для изменения настроек базы данных необходимо внести изменения в раздел DATABASES файла mysite/settings.py. По умолчанию он выглядит так:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

К примеру, если мы хотим использовать Postgresql, то он необходимо будет внести изменения и он станет выглядеть примерно так:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'db_name',                      
        'USER': 'db_user',
        'PASSWORD': 'db_user_password',
        'HOST': '127.0.0.1',
        'PORT': 'db_port_number',
    }
}

Подробнее о том как установить базу данных Postresql и как подключить ее к серверу разработки я постараюсь рассмотреть в другой раз, а пока нам необходимо обеспечить работоспособность базы данных по умолчанию. Для этого нам необходимо выполнить команду:

python manage.py migrate

Команда migrate анализирует файл настроек и раздел INSTALLED_APPS, который содержит информацию об установленных приложениях в проекте. По умолчанию в Django включены несколько приложений с целью обеспечения некоторого базового функционала:

django.contrib.admin – приложение для администрирования,

django.contrib.auth – приложение для обеспечения аутентификации пользователей,

django.contrib.contenttypes – фреймворк для типов контента,

django.contrib.sessions – управление сессиями,

django.contrib.messages – фреймворк для флэш-сообщений,

django.contrib.staticfiles –  фреймворк для работы со статическим файлами.

Выполненная выше команда создает необходимые записи в базе данных для каждого установленного приложения. Если какие-то из базовых приложений Django вам не нужно, то закомментируйте или удалите соответствующую строчку до выполнения команды migarte и тогда записи в БД не будут созданы.

До выполнения команды migarte измените в mysite/settings.py параметр TIME_ZONE = ‘UTC’ на нужную вам зону.

Результат выполнения команды migrate будет выглядеть примерно так:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying sessions.0001_initial... OK

Если у вас не вылезли никакие ошибки, то значит все сделано верно и наша БД готова для дальнейшей работы. Теперь можно переходить к созданию первой модели данных, которые будут храниться в нашей БД. Подробнее об этом читайте в следующей статье Создание сайта на Python/Django: создание моделей.

Пока все!

2 комментария

  1. Сергей:

    После изменения дефолтного SQLite на PostgreSQL выдает ошибку
    django.db.utils.OperationalError: invalid integer value “db_port_number” for connection option “port” .

    Посмотрел документацию к джанго, где указывается номер хоста – 5432, после этого выдает

    psycopg2.OperationalError: connection to server at “127.0.0.1”, port 5432 failed: Connection refused (0x000
    0274D/10061)
    Is the server running on that host and accepting TCP/IP connections?

    Шо делать, не знаю

    • IgorOsa:

      Очевидно, что сервер PostgreSQL блокирует подключение. Причин может быть много, но смотреть стоит в сторону конфигурации БД.

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.