Django の名前
ヴィヴィアン
Для всех последующих примеров кода предполагается, что выполнен импорт
settings
from django.conf import settings
プロブレマ
django は、settings.py を使用して、さまざまな設定を行っています.
# Обычно никто не задаёт значение для CSRF_COOKIE_AGE,
print(settings.CSRF_COOKIE_AGE) # никаких ошибок, всё работает
Часто для своего приложения нужны свои настройки 1 . settings.py で設定を変更すると、設定が変更されます.
print(getattr(settings, 'MY_APP_PARAM_1', default_value_of_param_1))
≥¡¡¡¡
# my_app/conf.py
default = {
'MY_APP_PARAM_1': default_value_of_param_1,
# Представьте, что здесь перечислены остальные настройки
}
def get_param_value(param_name):
return getattr(settings, param_name, default_value_of_param_1)
# my_app/any_place.py
from .conf import get_param_value
print(get_param_value('MY_APP_PARAM_1')) # выглядит не очень, но работает
print(get_param_value('MY_APP_PARAM_L')) # IDE не помешает нам ошибиться
х&頭、ч©願数o同ですÅですÖ言いますа言います.
Решение
Я не стал придумывать велосипед, а взял чужой.現在、PyPi は最新の状態に保たれており、最新の PyPi を使用することはできません.
на github gist までお問い合わせください
django-rest-framework を使用した場合は、django-rest-framework を使用した場合に使用されます. Файлик кладётся в папку доступную для всех приложений django. У меня это папка
settings.MY_APP_PARAM_1
.Посмотрим как это работает
# my_app\settings.py
from utils.django import AppSettings
# Описание настроек приложения.
# 1. Все поля находятся в одном месте
# 2. Видны все значения по умолчанию
# 3. При желании можно добавить типизацию
class MyAppSettings(AppSettings):
URL = ''
USER: str = ''
PASSWORD = ''
# Объект с инициализированными данными
# 1. Достаточно написать "conf." в любом IDE
# и редактор сам предложит название настройки
# 2. Все обращения приложения к настройкам должны
# происходить через этот объект, тогда не будет риска,
# что приложение "сломается" из-за внешних факторов
conf = MyAppSettings('MY_APP_CONF')
# django_project\settings.py
# ...
# Настройки Django-проекта
# 1. Могут быть заданны частично
# 2. Могут быть совсем не заданы
# 3. Могут быть заданы явно, без использования .env
MY_APP_CONF = {
'URL': env('MY_APP_URL', default=''),
'USER': env('MY_APP_USER', default=''),
'PASSWORD': env('MY_APP_PASSWORD', default=''),
}
# my_app\using.py
from .settings import conf
# Здесь создаётся условный клиент с подключением к некому сервису
client = get_data(conf.URL, conf.USER, conf.PASSWORD)
重要なことは次のとおりです.
Я называю настройкой константу, которая влияет на поведение программы и значение которой можно задать в settings.py ↩
Reference
この問題について(Django の名前), 我々は、より多くの情報をここで見つけました https://dev.to/gimntut/django-1d66テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol