Для создания нового проекта в Django используется команда startproject утилиты django-admin:
django-admin startproject <название проекта> [<путь к каталогу проекта>]
Путь можно не указывать – в этом случае папка будет создана в текущем каталоге с именем, совпадающим с названием проекта. В дальнейшем данную папку можно переименовать или перемещать в другое место, на работоспособность проекта это не повлияет.
Для хранения настроек проекта используется файл settings.py пакета конфигурации. В большинстве случаев параметры уже имеют значения по умолчанию, которые обычно являются оптимальными.
Для хранения настроек используются обычные переменные Python. Имя переменной совпадает с именем переменной.
Перечислим основные настройки:
— BASE_DIR – путь к каталогу проекта. По умолчания устанавливается автоматически;
— DEBUG – режим работы интернет-сайта: эксплуатационный (значение False) или отладочный (True, устанавливается при создании проекта). При работе в отладочном режиме при возникновении любой ошибки страница сайта содержит ее детальное описание. В противном случае выводится стандартное сообщение, например, «Страница не найдена». Также при эксплуатационном режиме используются более строгие параметры безопасности;
— DEFAULT_CHARSET – кодировка страниц (по умолчанию utf-8);
— ROOT_URLCONF – хранит путь к модулю с маршрутами уровня проекта, заполняется автоматически при создании проекта;
— SECRET_KEY – содержит секретный ключ в виде строки символов. Используется подсистемой разграничения доступа для шифрования данных. Генерируется автоматически утилитой django-admin.
Менять его без необходимости не рекомендуется. Также его необходимо хранить в секрете, поскольку ключ может использоваться злоумышленниками для взлома сайта.
Параметры баз данных
Все базы данных, задействованные в проекте, указываются в параметре DATABASES. В качестве значения должен использоваться словарь Python. Ключи элементов задают псевдонимы БД, зарегистрированных в проекте. Ограничения на количество баз данных нет. Если в процессе операций моделями проекта не указывать базу данных, будет подключена база с псевдонимом default.
В качестве элементов словаря также присутствуют словари, которые хранят остальные параметры базы данных.
При создании нового проекта параметру DATABASES автоматически присваивается следующее значение:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join.(BASE_DIR, 'db.sqlite3'), } }
Указывается единственная база данных, используемая по умолчанию. БД хранится в файле db.sqlite3 (каталог проекта) используется формат SQLite.
Django поддерживает следующие параметры баз данных:
— ENGINE – определяет формат подключаемой базы данных. Представляет собой путь к модулю, который реализует корректное взаимодействие с определенным форматом БД. Доступны следующие значения:
— django.db.backends.sqlite3 – SQLite;
— django.db.backends.postgresql – PostgreSQL;
— django.db.backends.mysql – MySQL;
— django.db.backends.oracle – Oracle;
— NAME – содержит путь к файлу БД (для SQLite), имя базы данных при использовании серверных СУБД;
— TIME_ZONE – временная зона, применяемая для даты и времени, хранящихся в базе. Используется, если подключенная БД не поддерживает добавление временной зоне при хранении даты и времени. По умолчанию – None.
Также есть параметры, которые используются только для серверных СУБД:
— HOST – интернет-адрес ПК, на котором функционирует данная СУБД;
— PORT – указывает номер TCP-порта для подключения к СУБД. По умолчанию значением является пустая строка (подключение через порт по умолчанию);
— USER – имя пользователя для подключения к БД;
— PASSWORD – пароль для подключения;
— CONN_MAX_AGE – время в секундах, в течение которого соединение с базой данных будет открыто. Если значение равно 0 (по умолчанию), соединение закрывается после обработки запроса. Если значение None, соединение активно постоянно;
— OPTIONS – набор дополнительных параметров, специфичных для текущей БД. Представляет собой словарь, где каждый параметр представляет собой отдельный параметр.
Ниже будет представлен пример кода, обеспечивающий подключение базе данных MySQL, которая называется sitedb и работает на этом же ПК. Имя пользователя – userdb, пароль passworddb:
DATABASES = { 'default ': { 'ENGINE': 'django.db.backends.mysql', 'HOST': 'localhost', 'USER': 'userdb', 'PASSWORD': 'passworddb', 'NAME': 'sitedb' } }