所以,我通常做的是:我有一个脚本,它在设置 Django 时运行并创建一个.env
包含一些值的文件。
项目设置.py
import os
import random
import string
def write_dot_env_file(env_file):
settings = get_settings()
with open(env_file, 'w') as f:
for k, v in settings.items():
f.write(f'{k.upper()}={v}\n')
def get_settings():
return {
'SECRET_KEY': generate_secret_key(),
'DEBUG': True,
'ALLOWED_HOSTS': '*',
}
def generate_secret_key():
specials = '!@#$%^&*(-_=+)'
chars = string.ascii_lowercase + string.digits + specials
return ''.join(random.choice(chars) for _ in range(50))
def main():
env_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), '.env')
if not os.path.isfile(env_file):
write_dot_env_file(env_file)
else:
pass
if __name__ == '__main__':
main()
然后在我manage.py
和wsgi.py
Django 设置你所做设置的路径之前:
管理.py
#!/usr/bin/env python
import os
import sys
from project_setup import main as project_setup_main
if __name__ == '__main__':
project_setup_main()
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'yoursettings')
...
就是这样。当 Django 运行时,它会为您创建一个.env
具有最低要求的文件。或者您可以generate_secret_key
在您的内部创建函数settings.py
并将其用作SECRET_KEY
声明的默认值,例如:SECRET_KEY = os.environ.get('SECRET_KEY', get_secret_key())