Django开发环境与生产环境的设置

本文介绍了如何通过区分开发环境和生产环境的配置来提高Django应用的安全性,特别是在SECRET_KEY和DEBUG设置方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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


settings

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

mark

在开发环境下,使用python manage.py runserver --settings=myblog.settings.local启动服务器
或者在虚拟环境的activate中添加set DJANGO_SETTINGS_MODULE="myblog.settings.local",这样做对于每个项目一个虚拟环境尤其是方便

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'),
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值