如何使用解耦的django
How use django with decouple
我正在尝试对项目中的敏感数据使用 python-解耦,但是
当我将 decouple.config 用于 SECRET_KEY 时,它会引发错误
错误
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")
我已经在使用 .ini 文件作为我的电子邮件地址和密码问题是它试图执行 SECRET_KEY 而不是将其作为原始文本接受 我该如何防止它
你应该有一个像下面这样的 env 文件
.env
SECRET_KEY='aaassskkkk'
然后使用以下命令获取您的 .env 文件
source .env
然后尝试下面的代码它会起作用
from decouple import config
SECRET_KEY = config('SECRET_KEY', '')
如果在 env 中找不到 SECRET_KEY 它将作为 ''
Decouple 支持 .ini
和 .env
文件。要使用 .env 文件,只需在存储库的根目录中创建一个 .env
文本文件。
SECRET_KEY='super-secret-key'
您也可以覆盖参数
SECRET_KEY='other-secret-key' python manage.py runserver
切中要点,正如 Henrique Bastos 所说,here:
Note: Since ConfigParser supports string interpolation, to represent the character % you need to escape it as %%.
要使用 python-与 .ini 文件分离,您可以这样做:
像第一个答案中所说的那样使用你的变量:
SECRET_KEY = config(SECRET_KEY, default='some-random-text')
如果需要,您可以使用强制转换,例如:
DEBUG = config(DEBUG, default=True, cast=bool)# in the .ini file, the DEBUG value can be: 0, 1, True, False...
所以最后,你的回溯错误显示你的 .ini 字符串值中有一个百分号,你可能需要按照官方文档中的说明用 %% 做一个 scapehttps://github.com/henriquebastos/python-decouple
使用双百分比执行转义解析器,而不是只有一个,错误就会消失!
我正在尝试对项目中的敏感数据使用 python-解耦,但是 当我将 decouple.config 用于 SECRET_KEY 时,它会引发错误
错误
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")
我已经在使用 .ini 文件作为我的电子邮件地址和密码问题是它试图执行 SECRET_KEY 而不是将其作为原始文本接受 我该如何防止它
你应该有一个像下面这样的 env 文件
.env
SECRET_KEY='aaassskkkk'
然后使用以下命令获取您的 .env 文件
source .env
然后尝试下面的代码它会起作用
from decouple import config
SECRET_KEY = config('SECRET_KEY', '')
如果在 env 中找不到 SECRET_KEY 它将作为 ''
Decouple 支持 .ini
和 .env
文件。要使用 .env 文件,只需在存储库的根目录中创建一个 .env
文本文件。
SECRET_KEY='super-secret-key'
您也可以覆盖参数
SECRET_KEY='other-secret-key' python manage.py runserver
切中要点,正如 Henrique Bastos 所说,here:
Note: Since ConfigParser supports string interpolation, to represent the character % you need to escape it as %%.
要使用 python-与 .ini 文件分离,您可以这样做: 像第一个答案中所说的那样使用你的变量:
SECRET_KEY = config(SECRET_KEY, default='some-random-text')
如果需要,您可以使用强制转换,例如:
DEBUG = config(DEBUG, default=True, cast=bool)# in the .ini file, the DEBUG value can be: 0, 1, True, False...
所以最后,你的回溯错误显示你的 .ini 字符串值中有一个百分号,你可能需要按照官方文档中的说明用 %% 做一个 scapehttps://github.com/henriquebastos/python-decouple
使用双百分比执行转义解析器,而不是只有一个,错误就会消失!