Как использовать django с decouple

Я пытаюсь использовать python-decouple для конфиденциальных данных в моем проекте, но Когда я использую decouple.config для SECRET_KEY, возникает ошибка

error

Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/home/admin/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/home/admin/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 345, in execute
    settings.INSTALLED_APPS
  File "/home/admin/.local/lib/python3.6/site-packages/django/conf/__init__.py", line 76, in __getattr__
    self._setup(name)
  File "/home/admin/.local/lib/python3.6/site-packages/django/conf/__init__.py", line 63, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/admin/.local/lib/python3.6/site-packages/django/conf/__init__.py", line 142, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/admin/Legaland/src/sqh/settings/dev.py", line 1, in <module>
    from ._base import *
  File "/home/admin/Legaland/src/sqh/settings/_base.py", line 40, in <module>
    SECRET_KEY = config("SECRET_KEY")
  File "/home/admin/.local/lib/python3.6/site-packages/decouple.py", line 199, in __call__
    return self.config(*args, **kwargs)
  File "/home/admin/.local/lib/python3.6/site-packages/decouple.py", line 83, in __call__
    return self.get(*args, **kwargs)
  File "/home/admin/.local/lib/python3.6/site-packages/decouple.py", line 65, in get
    value = self.repository[option]
  File "/home/admin/.local/lib/python3.6/site-packages/decouple.py", line 113, in __getitem__
    return self.parser.get(self.SECTION, key)
  File "/usr/lib/python3.6/configparser.py", line 800, in get
    d)
  File "/usr/lib/python3.6/configparser.py", line 394, in before_get
    self._interpolate_some(parser, option, L, value, section, defaults, 1)
  File "/usr/lib/python3.6/configparser.py", line 444, in _interpolate_some
    "found: %r" % (rest,))
configparser.InterpolationSyntaxError: '%' must be followed by '%' or '(', found: '%^e=(r2l0*73)4zxv!(!4x(%(_koxr049zlesn3"'

Как сделать так, чтобы он читал SECRET_KEY как текст

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = config("SECRET_KEY")

у вас должен быть файл env, как показано ниже

.env

SECRET_KEY='aaassskkkk'

и затем создайте исходный файл .env, используя следующую команду

source .env

попробуйте следующий код, он будет работать

from decouple import config
SECRET_KEY = config('SECRET_KEY', '')

если SECRET_KEY не найден в env, он будет принят как ''

Decouple поддерживает .ini и .env файлы. Для использования файла .env просто создайте текстовый файл .env в корневом каталоге вашего репозитория.

SECRET_KEY='super-secret-key'

вы также можете переопределить параметр

SECRET_KEY='other-secret-key' python manage.py runserver
Вернуться на верх