我有一个Django项目,我想在像bitbucket或github这样的公共存储库上发布.我希望它尽可能容易安装,所以我要包括完整的项目,而不仅仅是可插拔的应用程序.这意味着该settings.py文件也将被包含在内.
如何避免settings.SECRET_KEY每次安装都一样的问题?
是用户手动修改的唯一简单解决方案settings.py吗?
我应该将密钥存储在默认数据库中,settings.py如果它不存在则进行初始化吗?这将解决问题,但我想知道是否已经有一种标准的方法来做到这一点.
谢谢!
Uma*_*ang 87
要添加到CarlesBarrobés所说的内容,您可以使用Django使用的方法startproject生成一个新密钥:
from django.utils.crypto import get_random_string
chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'
get_random_string(50, chars)
Run Code Online (Sandbox Code Playgroud)
对于Django 1.10及更高版本,上面的代码片段很好地包含在一个函数中.
from django.core.management.utils import get_random_secret_key
get_random_secret_key()
Run Code Online (Sandbox Code Playgroud)
Car*_*bés 41
我会这样做:
将密钥放在单独的文件"secret_key.py"中.原始安装不存在此文件.在您的settings.py中包含以下内容:
try:
from .secret_key import SECRET_KEY
except ImportError:
SETTINGS_DIR = os.path.abspath(os.path.dirname(__file__))
generate_secret_key(os.path.join(SETTINGS_DIR, 'secret_key.py'))
from .secret_key import SECRET_KEY
Run Code Online (Sandbox Code Playgroud)
generate_secret_key(filename)您将编写的函数生成一个名为filename(我们称之为与其secret_key.py相同的目录settings.py)的文件,其中包含以下内容:
SECRET_KEY = '....random string....'
Run Code Online (Sandbox Code Playgroud)
其中随机字符串是基于随机数生成的密钥.
对于密钥生成,您可以使用Umang的建议/sf/answers/1164150361/.
Eva*_*van 21
打开一个Django shell,python manage.py shell并执行以下操作在Django 2.1中创建一个安全的随机密钥:
>>> from django.core.management.utils import get_random_secret_key
>>> get_random_secret_key()
'[GENERATED KEY]'
>>>
Run Code Online (Sandbox Code Playgroud)
注意:>>>表示shell提示符,不应键入.