多环境下,配置django settings

  1. 在settings.py旁边创建settings文件夹
  2. 重命名settings.py为base.py,并移动到新建的settings文件夹中
  3. 在settings/ 文件夹创建其它的配置文件
    以下为Django 2 by example原文
    In real-world projects you will have to deal with multiple
    environments. You will have at least a local and a production
    environment, but you could have other environments as well,
    such as testing or pre-production environments. Some project
    settings will be common to all environments, but others will
    have to be overridden per environment. Let's set up project
    settings for multiple environments while keeping everything
    neatly organized.
    Create a settings/ directory next to the settings.py file of the educa
    project. Rename the settings.py file to base.py and move it into
    the new settings/ directory. Create the following additional files
    inside the setting/ folder so that the new directory looks as
    follows:


    81033-5ea9ba94a08aee67.png
    image.png

    These files are as follows:
    base.py: The base settings file that contains common
    settings (previously settings.py)
    local.py: Custom settings for your local environment
    pro.py: Custom settings for the production environment
    Edit the settings/base.py file and replace the following line:

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

With the following one:

BASE_DIR =
os.path.dirname(os.path.dirname(os.path.abspath(os.path.join(__f
ile__, os.pardir))))

We have moved our settings files to a directory one level
lower, so we need BASE_DIR to point to the parent directory to be
correct. We achieve this by pointing to the parent directory
with os.pardir.
Edit the settings/local.py file and add the following lines of code:

from .base import *
DEBUG = True
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

This is the settings file for our local environment. We import
all settings defined in the base.py file and we only define specific
settings for this environment. We have copied the DEBUG and
DATABASES settings from the base.py file, since these will be set per
environment. You can remove the DATABASES and DEBUG settings
from the base.py settings file.
Edit the settings/pro.py file and make it look as follows:

from .base import *
DEBUG = False
ADMINS = (
('Antonio M', 'email@mydomain.com'),
)
ALLOWED_HOSTS = ['*']
DATABASES = {
'default': {
}
}

These are the settings for the production environment. Let's
take a closer look at each of them:
DEBUG: Setting DEBUG to False should be mandatory for any
production environment. Failing to do so will result in
traceback information and sensitive configuration data
exposed to everyone.
ADMINS: When DEBUG is False and a view raises an exception,
all information will be sent by email to the people
listed in the ADMINS setting. Make sure to replace the
name/email tuple with your own information.
ALLOWED_HOSTS: Django will only allow the hosts included
in this list to serve the application. This is a security
measure. We include the asterisk symbol * to refer to
all hostnames. We will limit the hostnames that can be
used for serving the application later.
DATABASES: We just keep this setting empty. We are going
to cover database setup for production hereafter.

When handling multiple environments, create a base settings file and a
settings file for each environment. Environment settings files should inherit
the common settings and override environment-specific settings.
We have placed the project settings in a different location than
the default settings.py file. You will not be able to execute any
commands with the manage.py tool unless you specify the
settings module to use. You will need to add a --settings flag
when you run management commands from the shell or set a
DJANGO_SETTINGS_MODULE environment variable.
Open the shell and run the following command:

export DJANGO_SETTINGS_MODULE=educa.settings.pro

This will set the DJANGO_SETTINGS_MODULE environment variable for
the current shell session. If you want to avoid executing this
command for each new shell, add this command to your
shell's configuration in the .bashrc or .bash_profile files. If you
don't set this variable you will have to run management
commands, including the --settings flag, as follows:

python manage.py migrate --settings=educa.settings.pro

You have successfully organized settings for handling multiple
environments.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值