Я пытаюсь создать сценарий bash для создания стандартного проекта django, который подходит для моей компании. Мне нужно удалить DATABASES в settings и добавить новый.
DATABASES — это словарь Python со структурой
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Для этого я пробовал что-то вроде этого
sed -i -e "/DATABASES = {/,/}/d" settings.py
Но это привело к трейлингу }.
Выход
}
Я понял, что шаблон, которому он соответствует, предназначен для первых фигурных скобок, но не для вторых. Какой должен быть подход для этого.





Почему бы просто не добавить новую конфигурацию DATABASE в конце настроек? Он автоматически переопределит предыдущую конфигурацию DATABASE. Я использую так:
DBCONIG = "DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '${dbName}',
'USER': '${dbUName}',
'PASSWORD': '${dbPass}',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}"
echo $DBCONIG >> settings.py
Здесь я собираю dbName, dbUName и т. д. из ввода оболочки.
Для более чистого подхода к реализации я держу local_settings.py с настройками, специфичными для пользовательской машины. Внутри в local_settings.py я поместил пользовательские конфигурации БД. и я импортирую этот файл в settings.py следующим образом:
try:
from .local_settings import *
except:
pass
Кроме того, я обычно помещаю файл local_settings.py в .gitignore, чтобы эти настройки не попадали в репозиторий.
Вы рассматривали github.com/audreyr/cookiecutter ?