2015-10-05 38 views
1

我有Django的这个文件夹结构如何可以把文件夹中在Django的设置

settings/dev.py 
settings/prod.py 
settings/test.py 

然后我在设置/ common.py常见的设置中,我检查像

if PROD: 
    from settings.prod import * 
的ENV变量基于ENV变量

他们中的每一个将被激活

我想用这样的事情在我的代码

from myapp import settings 

而不是

from myapp.settings import dev 

回答

2

这是我遵循的方法。从Django的Two Scoops那本书中学到了这一点。

  1. 有一个文件,诸如,settings/common.py其中将包含属性/设置,这是在dev的,督促和测试环境常见。 (你已经有这个。)
  2. 其他3个文件应当:通过增加线from .common import *
    1. 导入从settings/common.py常见的设置,并应包含其自己相应的环境设置。
  3. manage.py文件根据OS环境变量DJANGO_SETTINGS_MODULE决定要导入哪个设置文件。所以,对测试环境的DJANGO_SETTINGS_MODULE值应为参考mysite.settings.test

链接:

  1. Django的文档django-admin工具 - Link
  2. 两个Django的样本项目的瓢 - Link
1

保留您的设置文件夹结构并在那里创建__init__.py。

请使用如下代码设置/ __ init__.py:

import os 
# DJANGO_SERVER_TYPE 
# if 1: Production Server 
# else if 2: Test Server 
# else: Development Server 
server_type = os.getenv('DJANGO_SERVER_TYPE') 

if server_type==1: 
    from prod import * 
elif server_type==2: 
    from test import * 
else: 
    from dev import * 

现在,您可以设置所谓的DJANGO_SERVER_TYPE环境变量使用生产,测试或开发服务器和导入设置之间进行选择:

import settings 
+0

我不知道为什么,但我这样做,我包括'从myapp导入设置'然后我的测试gits这个错误'AttributeError:'模块'对象没有属性'test_views''这会消失如果使用正常的设置文件不是文件夹 – user3214546

+0

哪个测试?你可以给我更多的信息吗? – arkadyzalko

+0

我的意思是在任何测试中,即使它是空的,如果我导入该行,然后我得到该错误。如果我删除该行然后没有错误。但是,如果我在base dir中设置settings.py,然后设置/ dev.py中的所有其他文件,然后在base dor中的settings.py中使用我在__init__.py中使用的任何文件 – user3214546

相关问题