ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Django] settings.py 파일 분리
    언어/파이썬 & 장고 2016. 5. 21. 11:55

    base.py 

    """
    Django settings for polalis project.
    
    Generated by 'django-admin startproject' using Django 1.8.6.
    
    For more information on this file, see
    https://docs.djangoproject.com/en/1.8/topics/settings/
    
    For the full list of settings and their values, see
    https://docs.djangoproject.com/en/1.8/ref/settings/
    """
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    import os
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/
    
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = 'p5^ykf!%2(8q3lxqfi_+&ivv*xy7!77bcjc9-9^uw#eopu6e7o'
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True
    
    ALLOWED_HOSTS = []
    
    
    PROJECT_APPS = (
        'account',
        'bankbook',
        'cashbook',
        'cashreceipt',
        'credit',
        'ebill',
        'etaxbill',
        'finment',
        'library',
        'login',
        'polalis',
        'process',
        'scrapping',
        'situation',
        'slipfix',
        'statement',
        'trade',
        'trialbalance',
    
    )
    
    # Application definition
    
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'django_jenkins',
        'rest_framework',
        'rest_framework_swagger',
        'django_crontab',
        'account',
        'bankbook',
        'cashbook',
        'cashreceipt',
        'credit',
        'ebill',
        'etaxbill',
        'finment',
        'library',
        'login',
        'polalis',
        'process',
        'scrapping',
        'situation',
        'slipfix',
        'statement',
        'trade',
        'trialbalance',
    )
    
    JENKINS_TASKS = (
        'django_jenkins.tasks.run_pylint',
    )
    
    PYLINT_LOAD_PLUGIN = (
        'pylint_django',
    )
    '''
    REST_FRAMEWORK = {
        # Use Django's standard `django.contrib.auth` permissions,
        # or allow read-only access for unauthenticated users.
        'DEFAULT_PERMISSION_CLASSES': [
            'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
        ]
    }
    '''
    
    MIDDLEWARE_CLASSES = (
        'django.middleware.cache.UpdateCacheMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'django.middleware.security.SecurityMiddleware',
    )
    
    ROOT_URLCONF = 'polalis.urls'
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, '../templates')],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    CRONJOBS = [
        ('*/10 * * * *', 'scrapping.cron.scrapping_cron', '>> /tmp/scrapping_cron.log')
    ]
    
    WSGI_APPLICATION = 'polalis.wsgi.application'
    
    
    
    SWAGGER_SETTINGS = {
        'exclude_namespaces': [],
        'api_version': '0.1',
        'api_path': '/',
        'enabled_methods': [
            'get',
            'post',
            'put',
            'patch',
            'delete'
        ],
        'is_authenticated': False,
        'is_superuser': False,
        'unauthenticated_user': 'django.contrib.auth.models.AnonymousUser',
        'permission_denied_handler': None,
        'info': {
            'title': 'Polaris API',
        },
        'doc_expansion': 'none',
    }
    
    # Internationalization
    # https://docs.djangoproject.com/en/1.8/topics/i18n/
    
    LANGUAGE_CODE = 'en-us'
    
    TIME_ZONE = 'Asia/Seoul'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.8/howto/static-files/
    
    STATIC_URL = '/static/'
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, '../static'),
        './static/',
    )


    dev.py

    from polalis.settings.base import *
    
    CRONTAB_DJANGO_SETTINGS_MODULE = 'polalis.settings.dev'
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'polaris',
            'USER': 'sunrise',
            'PASSWORD': '1234',
            'HOST': 'postgres',
            'PORT': '5432'
        },
        'trialbalance': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'polaris_0108',
            'USER': 'sunrise',
            'PASSWORD': '1234',
            'HOST': 'postgres',
            'PORT': '5432'
        },
        'cashbook': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'cashbook',
            'USER': 'sunrise',
            'PASSWORD': '123',
            'HOST': 'postgres',
            'PORT': '5432'
        },
        'papyrus': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'polaris_papyrus',
            'USER': 'sunrise',
            'PASSWORD': '1234',
            'HOST': 'postgres',
            'PORT': '5432'
        },
        'polaris_0108': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'polaris_0108',
            'USER': 'sunrise',
            'PASSWORD': '1234',
            'HOST': 'postgres',
            'PORT': '5432'
        }
    }


    base.py는 공통적으로 사용하는 부분을 작성하는 파일입니다.

    local.py, dev.py 등 세팅환경을 분리하여 작성할 때 사용되며 from polalis.settings.base import * 와 같이 base.py를 참조합니다.

    파일경로

    SUNRISE(프로젝트) / SUNRISE (앱) / settings(폴더) / base.py, server.py, __init__.py (빨간색 부분은 생성해야함)

    세팅

    1. 기존에 사용하던 settings.py 안의 코드를 local.py에 전부 복사/붙여넣기합니다.
    2. TEMPLATES =[  { ... 'DIRS': [os.path.join(BASE_DIR'../../templates')] ... } ] 이와 같이 구성되어 있다면 DIRS를 다음과 같이 변경합니다.
      1. -> 'DIRS': [os.path.join(BASE_DIR'../templates')]
    3. STATICFILES_DIRS = ( os.path.join(BASE_DIR"../static"), ... 이와 같이 구성되어 있다면 os.path.join의 경로를 다음과 같이 변경합니다.

      1. -> os.path.join(BASE_DIR"../static")

    4. local.py는 로컬에서 실행하기 위해 설정한 파일이고, dev.py는 서버에서 실행시키기 위해 만든 파일입니다. 현재 server에서 변경할 부분은 databases의 속성밖에 없으므로, databases의 속성만 변경합니다. (위 코드 참조)
    5. /SUNRISE 앱 내의 wsgi.py 폴더를 살펴보면 os.environ.setdefault("DJANGO_SETTINGS_MODULE""SUNRISE.settings") 이렇게 실행 시, default로 참조할 settings 파일 경로 부분을 다음과 같이 변경합니다.
      1. -> os.environ.setdefault("DJANGO_SETTINGS_MODULE""SUNRISE.settings.local") - 서버일 경우 local 대신 dev를 입력합니다.

    실행법

    • 파이참에서 실행할 경우

      1. 상단 메뉴 탭의 Run - Run - Edit Configrations... - Environment - Environment variables: 우측의 ... 버튼 클릭 - DJANGO_SETTINGS_MODULE의 Value값을 SUNRISE.settings.local로 변경


    • 터미널에서 실행할 경우

      • 터미널 창에서 python manage.py runserver (호출할 URL) -- settings파일이 존재하는 폴더=project.폴더.실행시킬 파일
        • e.g,) python manage.py runserver ip주소:80 -- settings=SUNRISE.settings.server


    댓글