Django项目设置用于生产和开发

时间:2017-03-01 22:33:01

标签: django python-3.x django-settings

在Django中,我已经从repo更新了我的git。当我运行python3 manage.py collectstatic时,它会抛出" myproject"数据库不存在。我真的没有myproject数据库,因为在生产中我只有prod_project数据库。但是,某种程度上django试图从base.py加载myproject数据库而不是从prod.py加载

# base.py
    DATABASES = {                                                                        
            'default': {                                                                     
                'ENGINE': 'django.db.backends.postgresql_psycopg2',                          
                'NAME': 'myproject',                                                       
                'USER': 'admin',                                                            
                'PASSWORD': '*****',
                'ATOMIC_REQUESTS': True,                                                              
            },                                                                               
        }   

# prod.py
    from .base import *                                                                  

    DEBUG = False                                                                        
    TEMPLATE_DEBUG = DEBUG                                                               

    DATABASES = {                                                                        
        'default': {                                                                     
            'ENGINE': 'django.db.backends.postgresql_psycopg2',                          
            'NAME': 'prod_myproject',                                                       
            'USER': 'admin',                                                            
            'PASSWORD': '',                                                              
        },                                                                               
    }                                                                                    

    try:                                                                                 
        from .local import *                                                             
    except ImportError:                                                                  
        pass

# local.py is empty file

我的项目位于apps / project / prod文件夹中:

/.git
etc/
apps/
static/
myproject/
  settings/
    base.py
    prod.py.
    beta.py
  wsgy.py
manage.py

2 个答案:

答案 0 :(得分:2)

如果你单独设置2个setting.py,你应该声明要使用哪个settings.py!

您可以使用以下(mod_wsgi)执行此操作:

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'your_proj/settings_location/prod'

这会将django设置为使用特定的设置文件。

或者您可以在shell上执行此操作:

python manage.py collectstatic --settings=your_proj/settings_location/prod

指定所需的设置文件。

参考:https://docs.djangoproject.com/en/1.10/topics/settings/#on-the-server-mod-wsgi

答案 1 :(得分:0)

当我进行git pull时,设置中的__init__.py也被更改了。我不知道。我认识的开发人员建议我查看这个文件。我发现不同的设置文件被设置为默认值。我纠正了。现在它正在发挥作用。