Почему Django не видит мой json-файл в базовом каталоге?
Моя структура файлов здесь Я новичок в Django. И я читал в "2 Scoops of Django", что хранить пароль базы данных и т.д. в settings.py это плохо.
Итак, я решил хранить пароль и т.д. в json файле, затем я расширил settings.py этим кодом:
import json
import os
from django.core.exceptions import ImproperlyConfigured
with open(os.path.join(BASE_DIR, 'secrets.json')) as secrets_file:
secrets = json.load(secrets_file)
def get_secret(setting, secrets=secrets):
"""Get secret setting or fail with ImproperlyConfigured"""
try:
return secrets[setting]
except KeyError:
raise ImproperlyConfigured("Set the {} setting".format(setting))
Итак, я решил эту проблему. Моя ошибка заключалась в том, что я скопировал переменную BASE_DIR из settings.py и не понял, что она делает, поэтому моя функция не видела мой конфигурационный файл для БД. Я перенес функцию в другой файл, немного отредактировал переменную BASE_DIR и все заработало. И я получил этот файл:
from pathlib import Path
import json
import os
from django.core.exceptions import ImproperlyConfigured
BASE_DIR = Path(__file__).resolve().parent
# reads json with config for database
with open(os.path.join(BASE_DIR, 'settings_db/settings_for_db.json'))
as secrets_file:
secrets = json.load(secrets_file)
def get_secret(setting, secrets=secrets):
"""Get secret setting or fail with ImproperlyConfigured"""
try:
return secrets[setting]
except KeyError:
raise ImproperlyConfigured("Set the {}
setting".format(setting))