Лучшие практики Django
Недавно наткнулся на статью о лучших практиках разработки на django (ссылка), меня сильно порадовало что большинство из этого я интуитивно использую уже довольно давно, но вот некоторые части мне кажется нужно делать подругому нежели описанны в статье. Сейчас хочу привести вашему вниманию симбеоз статьи указанной выше и моих мыслей. Также советую совместить данную статью с моим постом о структуре django проекта
Струкура настроек проекта
Я обычно храню все основные настройки в файле settings.py и в него импортирую файл local_settings.py, также файл settings.py хранится в git, а local_settings.py делается для каждого окружения свой, но в git хранится local_settings.py.example который содержит структуру файла и то что можно в нем менять или добавить.
Импорт в settings.py:
try: from settings_local import * except ImportError: pass
Примерное содержимое файла local_settings.py.example:
import os DEBUG = True TEMPLATE_DEBUG = DEBUG ADMINS = ( ('You', '[email protected]'), ) MANAGERS = ADMINS DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(os.path.realpath(__file__), 'dev.db'), } } CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', } }
Структура выглядит примерно так:
project #директория проекта - prjct #директория основного приложения - - settings.py - - local_settings.py.example - - local_settings.py - - … - manage.py
При переносе приложения на другой сервер, либо при открытии проекта другим разарботкичом требуется лишь переименовать local_settings.py.example в local_settings.py и внести нужные настройки.
Использование путей к файлам.
В настройках django нужно указывать пути до директорий в которых хранятся статические файлы, наблоны, файлы локализации и тд. Для этого не нужно писать полный путь, а лучше поручить все это python. Я для этого использую данный прием:
import os PROJECT_DIR = os.path.dirname(os.path.realpath(__file__)) def p(*args): return os.path.join(PROJECT_DIR, '..', *args)
В теперь путь функция p будет указывать на корень проекта, и использовать ее нужно вот так:
STATIC_ROOT = p('static’)
Для статических файлов будет определена директория static в корне проекта.
Статические файлы в шаблоне.
Для определения путей к статическим файлам я использую приложение staticfiles (django.contrib.staticfiles), его нужно добавить к списку INSTALLED_APPS:
INSTALLED_APPS = [ …. ‘django.contrib.staticfiles’, …. ]
И теперь во всех шаблонах мы сможем использовать удобную конструкцию для загрузки статических файлов:
{% load static %}
Работа с шаблонами.
Самый лучший и однозначный способ именования шаблонов это использование такой конструкции:
[приложение] / [модель] _ [функция]. HTML
Функции:
- list - для вывода списков
- detail - для детальное отображения
- form - для вывода формы
А все части шаблона нужно складывать в директорию includes
Я указал лишь основы, в будущем скорей всего продолжу тему хороших практик при создании django приложения
Комментарии (0)
Вам нужно авторизироваться, чтобы оставить свой комментарий