1. 程式人生 > 實用技巧 >Django settings 描述

Django settings 描述

"""
Django settings for log_collect_statistics project.

Generated by 'django-admin startproject' using Django 2.1.15.

For more information on this file, see
https://docs.djangoproject.com/en/2.1/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.1/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
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/2.1/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '--1k(694cyc_6s7r=7!hp25km_2*hp^j$b&hm(3%+ydq68_se4'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

# 允許所有域名訪問
ALLOWED_HOSTS = ["*"]


# Application definition

# App列表
INSTALLED_APPS = [
    'django.contrib.admin',  # 內建後臺管理系統
    'django.contrib.auth',  # 內建使用者認證系統
    'django.contrib.contenttypes',  # 記錄專案中所有的model元陣列(Django 的 ORM框架)
    'django.contrib.sessions',  # session會話功能, 用於標識當前訪問網站使用者身份,記錄像相關使用者資訊
    'django.contrib.messages',  # 訊息提示功能
    'django.contrib.staticfiles',  # 查詢靜態資源路徑
    'app.apps.AppConfig',
    'user.apps.UserConfig',
]

# 中介軟體
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',  # 內建的安全機制,保護使用者與網站的通訊安全
    'django.contrib.sessions.middleware.SessionMiddleware',  # 會話session功能
    'django.middleware.locale.LocaleMiddleware',  # 使用中文
    'django.middleware.common.CommonMiddleware',  # 處理請求資訊,規範化請求內容
    'django.middleware.csrf.CsrfViewMiddleware',  # 開啟CSRF防護功能
    'django.contrib.auth.middleware.AuthenticationMiddleware',  # 開啟內建的使用者認證系統
    'django.contrib.messages.middleware.MessageMiddleware',  # 開啟內建的資訊提示功能
    'django.middleware.clickjacking.XFrameOptionsMiddleware',  # 防止惡意程式點選劫持
    'log_collect_statistics.middlewares.cors.Mymiddle',
    'log_collect_statistics.middlewares.ExceptionLoggingMiddleware.ExceptionLoggingMiddleware',
]

ROOT_URLCONF = 'log_collect_statistics.urls'

# 模板配置
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',  # 定義模板引擎,用於識別模板裡面的變數和指令
        'DIRS': [os.path.join(BASE_DIR, 'templates'), ],  # 設定模板所在路徑
        'APP_DIRS': True,  # 是否在APP裡面查詢模板檔案
        'OPTIONS': {  # 用於填充在RequestContext中上下文的呼叫函式,一般情況不做任何修改
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'log_collect_statistics.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases

# 資料庫配置
if DEBUG:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',  # 連結資料庫的型別
            'NAME': 'log_collect',  # 連結資料庫的名字
            'HOST': '192.168.10.5',  # 資料庫主機地址
            'PORT': 3306,  # 資料庫埠
            'USER': 'wzy',  # 資料庫使用者名稱
            'PASSWORD': 'root1234',  # 資料庫密碼
        },
        'my_sqlite3': {
            'ENGINE': 'django.db.backends.sqlite3',  # 連結資料庫的型別
            'NAME': os.path.join(BASE_DIR, 'sqlite3'),  # 連結資料庫的名字
        }
    }


# Password validation
# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/

LANGUAGE_CODE = 'en-us'

# 時區配置
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = True

# 配置自定義用表 MyUser
AUTH_USER_MODEL = 'user.MyUser'


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/

# 預設靜態檔案在app的static目錄下  是app列表中django.contrib.staticfiles實現的
STATIC_URL = '/static/'

# 在伺服器上部署,實現伺服器和專案之間的對映,主要是收集整個專案的靜態資源,並存放在一個新的資料夾,然後由該檔案與伺服器之間構建對映關係
# 主要用於專案部署
# STATIC_ROOT = os.path.join(BASE_DIR, 'all_static'),

# 將靜態檔案配置在系統根目錄下
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

# rabbitMq 的配置資訊
if DEBUG:
    RABBIT_HOST = '192.168.10.10'
    QUEUE_TOPIC = 'logs'
    RABBIT_USERNAME = 'wzy'
    RABBIT_PASSWORD = 'root1234'
else:
    RABBIT_HOST = '192.168.10.10'
    QUEUE_TOPIC = 'logs'
    RABBIT_USERNAME = 'wzy'
    RABBIT_PASSWORD = 'root1234'

LOG_ROOT = os.path.join(BASE_DIR, 'logs') + os.sep
# 日誌儲存路徑
if DEBUG:
    # 日誌記錄
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
           'standard': {
               'format': '%(asctime)s [%(name)s:%(lineno)d][%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'},
        },
        'handlers': {
            'console': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',
            },
            'file': {
                'level': 'DEBUG',
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': LOG_ROOT + 'all.log',
                'maxBytes': 1024*1024*5,                  # 檔案大小
                'backupCount': 10,                         # 備份份數
                'formatter': 'standard',
            },
            'info': {
                'level': 'INFO',
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': LOG_ROOT + 'info.log',
                'maxBytes': 1024*1024*5,                  # 檔案大小
                'backupCount': 10,                         # 備份份數
                'formatter': 'standard',
            },
            'error': {
                'level': 'WARNING',
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': LOG_ROOT + 'error.log',
                'maxBytes': 1024*1024*5,                  # 檔案大小
                'backupCount': 10,                         # 備份份數
                'formatter': 'standard',
            },
        },
        # 字別的模組中使用使用  import logging   logger = logging.getLogger('django')   getLogger 中的變數為 以下配置中內容
        'loggers': {
            'django': {
                'handlers': ['file', 'console'],
                'propagate': True,
            },
            'inf': {
                'handlers': ['info', 'console'],
                'level': 'INFO',
                'propagate': True,
            },
            'err': {
                'handlers': ['error', 'console'],
                'level': 'WARNING',
                'propagate': True,
            },
            # 檢視資料庫執行程式碼
            'django.db.backends': {
                'handlers': ['console', ],
                'propagate': True,
                'level': 'DEBUG',
            },
        },
    }

else:
    # 日誌記錄
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'standard': {
                'format': '%(asctime)s [%(name)s:%(lineno)d][%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'},
        },
        'handlers': {
            'console': {
                'level': 'INFO',  # DEBUG
                'class': 'logging.StreamHandler',
            },
            'file': {
                'level': 'INFO',  # DEBUG
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': LOG_ROOT + 'all.log',
                'maxBytes': 1024 * 1024 * 5,  # 檔案大小
                'backupCount': 10,  # 備份份數
                'formatter': 'standard',
            },
            'info': {
                'level': 'INFO',
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': LOG_ROOT + 'info.log',
                'maxBytes': 1024 * 1024 * 5,  # 檔案大小
                'backupCount': 10,  # 備份份數
                'formatter': 'standard',
            },
            'error': {
                'level': 'WARNING',
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': LOG_ROOT + 'error.log',
                'maxBytes': 1024 * 1024 * 5,  # 檔案大小
                'backupCount': 10,  # 備份份數
                'formatter': 'standard',
            },
        },
        # 字別的模組中使用使用  import logging   logger = logging.getLogger('django')   getLogger 中的變數為 以下配置中內容
        'loggers': {
            'django': {
                'handlers': ['file', 'console'],
                'propagate': True,
            },
            'inf': {
                'handlers': ['info', 'console'],
                'level': 'INFO',
                'propagate': True,
            },
            'err': {
                'handlers': ['error', 'console'],
                'level': 'WARNING',
                'propagate': True,
            },
            # 檢視資料庫執行程式碼
            'django.db.backends': {
                'handlers': ['console', ],
                'propagate': True,
                'level': 'DEBUG',
            },
        },
    }