Удобные настройки в Django
anderson |
В процессе создания проекта мы постоянно пополняем файл настроек (settings.py) различными константами нашего проекта, настройками сторонних библиотек, а так же специфическими настройками сервера разработки и продакшена. В результате settings.py становится просто громадным и трудно читаемым.
В этой статье я расскажу вам, как разбить настройки проекта на несколько мелких файлов, используя маленькие хитрости питона.
Хитрость заключается в том, чтобы превратить наши настройки в библиотеку и подключить все нужные файлы через __init__.py.
Итак, создаём в корневой папке проекта директорию settings, вовнутрь кладём наш ещё девственно чистый settings.py под именем __init__.py, содержащий только настройки самой джанги. Далее в самом низу, делаем импорт дополнительных файлов.
Для примера возьмём библиотеку django-compress, создадим для неё файл settings/compress.py, затем в settings/__init__.py сделаем следующий импорт
Подключите по очереди все файлы, последним я рекомендую подключать файл local.py, в котором нужно держать специфически настройки сервера, такие как подключение к базе данных и тд.
Вот так например выглядит настройки проекта pyplanet
Если вы использовали динамическое определение папки проекта и от неё задавали MEDIA_ROOT и TEMPLATE_DIRS в стиле
то теперь вам нужно будет изменить это на
Других изменений в проекте не потребуется.
В этой статье я расскажу вам, как разбить настройки проекта на несколько мелких файлов, используя маленькие хитрости питона.
Хитрость заключается в том, чтобы превратить наши настройки в библиотеку и подключить все нужные файлы через __init__.py.
Итак, создаём в корневой папке проекта директорию settings, вовнутрь кладём наш ещё девственно чистый settings.py под именем __init__.py, содержащий только настройки самой джанги. Далее в самом низу, делаем импорт дополнительных файлов.
Для примера возьмём библиотеку django-compress, создадим для неё файл settings/compress.py, затем в settings/__init__.py сделаем следующий импорт
from .compress import *
Подключите по очереди все файлы, последним я рекомендую подключать файл local.py, в котором нужно держать специфически настройки сервера, такие как подключение к базе данных и тд.
Вот так например выглядит настройки проекта pyplanet
(venv)[offline@laptop python]$ ll settings/
total 36K
-rw-r--r-- 1 offline offline 286 May 15 11:22 bbmarkup.py
-rw-r--r-- 1 offline offline 3.7K May 25 15:22 compress.py
-rw-r--r-- 1 offline offline 5.1K May 27 08:17 __init__.py
-rw-r--r-- 1 offline offline 1.3K May 18 14:21 local.py
-rw-r--r-- 1 offline offline 1.6K May 13 13:28 publicauth.py
-rw-r--r-- 1 offline offline 189 Apr 21 17:51 sape.py
-rw-r--r-- 1 offline offline 125 Apr 26 17:20 simplepagination.py
-rw-r--r-- 1 offline offline 28 May 27 08:17 tagging.py
Если вы использовали динамическое определение папки проекта и от неё задавали MEDIA_ROOT и TEMPLATE_DIRS в стиле
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
то теперь вам нужно будет изменить это на
PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
Других изменений в проекте не потребуется.