即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

Django实例开发环境和生产环境的设置

编程语言 elang6962 22℃ 0评论
本文目录
[隐藏]

我的博客部署后,开始考虑到安全问题了,因为在学习过程中不止一次的看到过settings中的SECRET_KEY,既然这么命名,而且后面跟的字符串还那么复杂,就必然是不应该被公开的。

因此要将settings区分为开发环境和生产环境。


1.settings

删掉原settings.py文件,在其目录下创建settings文件夹,类似这样:

mark

在开发环境下,使用python manage.py runserver --settings=myblog.settings.local启动服务器


或者在虚拟环境的activate中添加set DJANGO_SETTINGS_MODULE="myblog.settings.local",这样做对于每个项目一个虚拟环境尤其是方便

2.local.py设置

from .base import *

SECRET_KEY = '长长的乱乱的'
DEBUG = True

base中相应就没有SECRET_KEY和DEBUG,BASE_DIR再套一层dirname

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

数据库也可能不同,因此也从base中移到local

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

3.production.py设置

import os
from .base import *

SECRET_KEY = os.environ['SECRET_KEY']
DEBUG = False

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

与local.py的主要区别就在于隐私信息的保护,如SECRET_KEY需要从环境变量中获取,这一步连同settings的设置一起,在主机虚拟环境的activate添加,Linux下将set改为export

set DJANGO_SETTINGS_MODULE="myblog.settings.local"
set SECRET_KEY="这里写长长的乱乱的"

最后,注意在.gitignore中加上local。

有强迫症的同学可以在这个网站自动生成SECRET_KEY

转载请注明:CodingBlog » Django实例开发环境和生产环境的设置

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情