LINUX.ORG.RU

Настройки django-приложения

 ,


3

1

Имеется в репозитории django-приложение разрабатываемое в PyCharm. Допустим, разработка ведется несколькими людьми на разных рабочих местах. На разных компьютерах файловые пути к некоторым необходимым для функционирования данным отличаются, потому прописывать их в settings.py не кошерно.

Как принято задавать файловые пути в качестве настроек, не занося их в репозиторий в django?


Из os.environ подтяните.

Deleted
()

Я делаю так:

settings.py. В самом конце файла последними строками

try:
  from settings_local import *
except ImportError:
  pass

Соответственно в файлике settings_local ты можешь переопределять все, что раньше было определено. Файл settings_local добавляешь в тот же .gitignore, чтобы его в репу не засосало... И все. У каждого разраба свои конфиги, по-сути...

proext
()

Пути надо брать от корня проекта, от него они должны быть одинаковыми для всех, корень проекта берётся из os.path
Примеры можешь посмотреть в дефолтных настройках проекта

Goury ★★★★★
()
Ответ на: комментарий от Goury

Иногда django является далеко не самым большим компонентом приложения и прикручивается сбоку к чему-нибудь ещё. В этом случае всё тоже внутрь директории проекта запихивать?

Ну и всякие usermedia и подобную фигню, чтобы случайно не попали в git, стоит вытаскивать.

x3al ★★★★★
()
Ответ на: комментарий от x3al

Иногда django является далеко не самым большим компонентом приложения

Это только если ты что-то делаешь очень неправлиьно.

В этом случае всё тоже внутрь директории проекта запихивать?

А про ".." вы слышали, уважаемый говнокодер?

чтобы случайно не попали в git

Это самая большая ахинея, которую я видел на ЛОРе на этой неделе

Goury ★★★★★
()
Ответ на: комментарий от Goury

..

И потом править когда из модуля всё переносится в подмодуль? Да ну нафиг.

Проще записать пути в конфиг либо ENV и дёргать их оттуда.

x3al ★★★★★
()
Ответ на: комментарий от Goury

Пути надо брать от корня проекта, от него они должны быть одинаковыми для всех, корень проекта берётся из os.path

Источники данных, используемые при разработке и тестировании на разных рабочих станциях находятся по разным путям.

totik
() автор топика
Ответ на: комментарий от Goury

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

Вопрос именно такой: как использовать разные абсолютные пути работая в репозитории.

totik
() автор топика
Ответ на: комментарий от totik

Симлинки пусть себе сделают на одинаковый путь и не страдают хернёй

Goury ★★★★★
()
Ответ на: комментарий от Goury

У тебя шизофрения. Мне виднее какие вопросы я задаю.

totik
() автор топика

https://github.com/pydanny/cookiecutter-django/tree/master/{{cookiecutter.rep...

Пэкэдж settings в нем несколько вариантов настроек для разных разработчиков, продакшена и дев-сервера. Пароли можно импортировать из отдельного passwords.py(который не лежит в репе) или из переменных окружения.

Нужный конфиг задается переменной окружения DJANGO_SETTINGS_MODULE.

Для удобства её можно задавать в virtualenv/bin/postactivate - export DJANGO_SETTINGS_MODULE=config.settings.settings_vanya

Рекомендую книжку 2 scoops of django там описаны best practices в т.ч. как конфиругацию хранить и многое другое.

pawnhearts ★★★★★
()
Последнее исправление: pawnhearts (всего исправлений: 1)
Ответ на: комментарий от Goury

Корень проекта берется из PROJECT_ROOT = Path(__file__).ancestor(3) или типа того.

pawnhearts ★★★★★
()

DJANGO_SETTINGS_FILE=mylocalsettings

mylocalsettings.py: from settings import * WORLD_SECRET='Ты уд'

Даже в репозиторий ничего коммитить не надо. И объяснять потом что это и для чего.

anonymous
()

Не знаю как в django, но например в zend на php вроде есть такая штукак как local.application.ini и там все хранят свои настройки которые перекрывают application.ini. Просто и понятно. Не знаю есть ли в django что похожее.

rusich
()

Нужно попрыгать вокруг него с бубном, сопровождая данное эзотерическое действие словами: «джанго-джанго, вiсело жiвем, джанго-джанго, пiсенку поем»

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.