項目源碼下載:http://download.vhosts.cnhtml
# -*- coding: utf-8 -*- """ Django settings for cpyblog project. Generated by 'django-admin startproject' using Django 1.11.18. For more information on this file, see https://docs.djangoproject.com/en/1.11/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/1.11/ref/settings/ """ import os import sys # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 將apps 和extra_apps 兩個包加入到根搜索路徑,方便使用時能夠直接導入模塊,而不用從根目錄開始一級一級導入 sys.path.insert(0, os.path.join(BASE_DIR, 'apps')) sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps')) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'v+=x5qo3dkg_)nfag_#avt8u)&s$1nz5f#*f_ut4k72-6vh#ig' # SECURITY WARNING: don't run with debug turned on in production! # 開啓debug 調試模式 DEBUG = True # 添加容許訪問的主機列表,能夠是ip也能夠是域名,*表明全部 ALLOWED_HOSTS = ["*"] # Application definition # 將app 加入到列表中 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'xadmin', # 添加xadmin 第三方app 'DjangoUeditor', # 添加djangoueditor 第三方app 'users', # 添加users app 'blogs', # 添加blogs app 'crispy_forms', # 添加xadmin中表單美化 app ] # 修改默認的用戶認證爲UserProfile表 AUTH_USER_MODEL = 'users.UserProfile' # django2.X 以上MIDDLEWARE_CLASSES 改爲MIDDLEWARE 若是版本不匹配可能出現:'WSGIRequest' object has no attribute 'user' MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] # 默認根路由文件 ROOT_URLCONF = 'cpyblog.urls' # 默認html 模板文件位置 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', ], }, }, ] WSGI_APPLICATION = 'cpyblog.wsgi.application' # Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases # 數據庫配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'cpyblog', # 數據庫名 'HOST': 'localhost', # 數據庫地址 'PORT': 3306, # 數據庫端口 'USER': 'root', # 登陸名 'PASSWORD': 'xxxxxxxxxx' # 登陸密碼 } } # Password validation # https://docs.djangoproject.com/en/1.11/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/1.11/topics/i18n/ LANGUAGE_CODE = 'zh-Hans' # 使用中文簡體 TIME_ZONE = 'Asia/Shanghai' # 時區使用亞洲上海 USE_I18N = True USE_L10N = True USE_TZ = False # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.11/howto/static-files/ # 將static加入到staticfile 查找目錄中 STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] # 定義static目錄的訪問url STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'all_static') # 定義media 根目錄 MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' # session 配置 SESSION_ENGINE = 'django.contrib.sessions.backends.db' SESSION_COOKIE_NAME = 'sessionid' SESSION_COOKIE_PATH = '/' # session的cookie 保存的路徑(默認爲根) SESSION_COOKIE_DOMAIN = None # session的cookie保存的域名(默認爲None) SESSION_COOKIE_HTTPONLY = True # session的cookie傳輸只支持http傳輸 # 每次request請求都從新刷新session緩存 SESSION_SAVE_EVERY_REQUEST = True # 關閉瀏覽器session失效 SESSION_EXPIRE_AT_BROWSER_CLOSE = True # session過時時間爲5分鐘,由於前面設置了每次請求都刷新session # 因此能夠看做5分鐘不操做則過時 SESSION_COOKIE_AGE = 60 * 5 # 配置日誌文件目錄和日誌存放格式等 LOG_DIR = os.path.join(BASE_DIR, 'logs') LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'logout': { 'format': '[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s', 'datefmt': '%Y-%m-%d %H:%M:%S' }, }, 'filters': { 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse', }, 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', }, }, 'handlers': { 'business': { 'level': 'INFO', 'filters': ['require_debug_false'], 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(LOG_DIR, 'blog.log'), 'maxBytes': 1024 * 1024 * 5, 'backupCount': 1, 'formatter': 'logout', }, 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', 'formatter': 'logout', }, 'author': { 'level': 'INFO', 'filters': ['require_debug_false'], 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(LOG_DIR, 'author.log'), 'maxBytes': 1024 * 1024 * 5, 'backupCount': 1, 'formatter': 'logout', } }, 'loggers': { 'django.request': { 'handlers': ['console'], 'level': 'DEBUG', 'propagate': False, }, 'blog': { 'handlers': ['business'], 'level': 'INFO', 'propagate': True, }, 'author': { 'handlers': ['author'], 'level': 'INFO', 'propagate': True, } } }