|
|
|
|
@ -1,26 +1,25 @@
|
|
|
|
|
"""
|
|
|
|
|
Django settings for djangoblog project.
|
|
|
|
|
|
|
|
|
|
Generated by 'django-admin startproject' using Django 1.10.2.
|
|
|
|
|
|
|
|
|
|
For more information on this file, see
|
|
|
|
|
https://docs.djangoproject.com/en/1.10/topics/settings/
|
|
|
|
|
|
|
|
|
|
For the full list of settings and their values, see
|
|
|
|
|
https://docs.djangoproject.com/en/1.10/ref/settings/
|
|
|
|
|
项目配置文件
|
|
|
|
|
===========
|
|
|
|
|
主要配置项说明:
|
|
|
|
|
- 数据库配置
|
|
|
|
|
- 应用注册
|
|
|
|
|
- 中间件配置
|
|
|
|
|
- 模板配置
|
|
|
|
|
- 静态文件配置
|
|
|
|
|
开发环境:SQLite数据库
|
|
|
|
|
生产环境:需要切换为PostgreSQL/MySQL
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
import sys
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def env_to_bool(env, default):
|
|
|
|
|
str_val = os.environ.get(env)
|
|
|
|
|
return default if str_val is None else str_val == 'True'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
|
|
|
|
|
|
|
|
@ -43,25 +42,30 @@ CSRF_TRUSTED_ORIGINS = ['http://example.com']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
INSTALLED_APPS = [
|
|
|
|
|
# Django 内置核心应用
|
|
|
|
|
# 'django.contrib.admin',
|
|
|
|
|
'django.contrib.admin.apps.SimpleAdminConfig',
|
|
|
|
|
'django.contrib.auth',
|
|
|
|
|
'django.contrib.contenttypes',
|
|
|
|
|
'django.contrib.sessions',
|
|
|
|
|
'django.contrib.messages',
|
|
|
|
|
'django.contrib.staticfiles',
|
|
|
|
|
'django.contrib.sites',
|
|
|
|
|
'django.contrib.sitemaps',
|
|
|
|
|
'mdeditor',
|
|
|
|
|
'haystack',
|
|
|
|
|
'blog',
|
|
|
|
|
'accounts',
|
|
|
|
|
'comments',
|
|
|
|
|
'oauth',
|
|
|
|
|
'servermanager',
|
|
|
|
|
'owntracks',
|
|
|
|
|
'compressor',
|
|
|
|
|
'djangoblog'
|
|
|
|
|
'django.contrib.admin.apps.SimpleAdminConfig', # 管理员后台系统(简化版)
|
|
|
|
|
'django.contrib.auth', # 用户认证和权限系统
|
|
|
|
|
'django.contrib.contenttypes', # 内容类型框架,用于通用关系
|
|
|
|
|
'django.contrib.sessions', # 会话管理,存储用户会话数据
|
|
|
|
|
'django.contrib.messages', # 消息框架,一次性提示信息
|
|
|
|
|
'django.contrib.staticfiles', # 静态文件服务(CSS, JS, 图片等)
|
|
|
|
|
'django.contrib.sites', # 多站点支持,识别当前网站
|
|
|
|
|
'django.contrib.sitemaps', # 网站地图生成,SEO优化
|
|
|
|
|
|
|
|
|
|
# 第三方应用
|
|
|
|
|
'mdeditor', # Markdown编辑器,用于富文本编辑
|
|
|
|
|
'haystack', # 搜索框架,提供全文搜索功能
|
|
|
|
|
'compressor', # 静态文件压缩,合并CSS/JS文件
|
|
|
|
|
|
|
|
|
|
# 项目自定义应用
|
|
|
|
|
'blog', # 博客应用 - 文章发布和管理
|
|
|
|
|
'accounts', # 账户应用 - 用户注册和登录
|
|
|
|
|
'comments', # 评论系统 - 文章评论功能
|
|
|
|
|
'oauth', # OAuth认证 - 第三方登录支持
|
|
|
|
|
'servermanager', # 服务器管理 - 系统监控和管理
|
|
|
|
|
'owntracks', # 位置追踪 - 地理位置服务
|
|
|
|
|
'djangoblog' # 主应用 - 项目核心功能
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
MIDDLEWARE = [
|
|
|
|
|
@ -83,40 +87,45 @@ MIDDLEWARE = [
|
|
|
|
|
|
|
|
|
|
ROOT_URLCONF = 'djangoblog.urls'
|
|
|
|
|
|
|
|
|
|
# 模板配置
|
|
|
|
|
# 定义Django如何查找和渲染HTML模板
|
|
|
|
|
TEMPLATES = [
|
|
|
|
|
{
|
|
|
|
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
|
|
|
|
'DIRS': [os.path.join(BASE_DIR, 'templates')],
|
|
|
|
|
'APP_DIRS': True,
|
|
|
|
|
'BACKEND': 'django.template.backends.django.DjangoTemplates', # 使用Django模板引擎
|
|
|
|
|
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 全局模板目录路径
|
|
|
|
|
'APP_DIRS': True, # 是否在每个应用的templates目录中查找模板
|
|
|
|
|
'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',
|
|
|
|
|
'blog.context_processors.seo_processor'
|
|
|
|
|
'context_processors': [ # 上下文处理器,向所有模板传递通用变量
|
|
|
|
|
'django.template.context_processors.debug', # 调试信息
|
|
|
|
|
'django.template.context_processors.request', # 请求对象
|
|
|
|
|
'django.contrib.auth.context_processors.auth', # 用户认证信息
|
|
|
|
|
'django.contrib.messages.context_processors.messages', # 消息框架
|
|
|
|
|
'blog.context_processors.seo_processor' # 自定义:SEO处理器
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
WSGI_APPLICATION = 'djangoblog.wsgi.application'
|
|
|
|
|
|
|
|
|
|
# Database
|
|
|
|
|
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 数据库配置
|
|
|
|
|
# 使用MySQL数据库,开发环境也可考虑SQLite简化部署
|
|
|
|
|
DATABASES = {
|
|
|
|
|
'default': {
|
|
|
|
|
'ENGINE': 'django.db.backends.mysql',
|
|
|
|
|
'NAME': 'django_blog',
|
|
|
|
|
'USER': 'root',
|
|
|
|
|
'PASSWORD':'258066',
|
|
|
|
|
'HOST': '127.0.0.1',
|
|
|
|
|
'PORT': 3306,
|
|
|
|
|
'ENGINE': 'django.db.backends.mysql', # 数据库引擎:MySQL
|
|
|
|
|
'NAME': 'django_blog', # 数据库名称
|
|
|
|
|
'USER': 'root', # 数据库用户名
|
|
|
|
|
'PASSWORD': '258066', # 数据库密码
|
|
|
|
|
'HOST': '127.0.0.1', # 数据库主机地址
|
|
|
|
|
'PORT': 3306, # 数据库端口号
|
|
|
|
|
'OPTIONS': {
|
|
|
|
|
'charset': 'utf8mb4'},
|
|
|
|
|
}}
|
|
|
|
|
'charset': 'utf8mb4' # 字符集,支持emoji表情
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Password validation
|
|
|
|
|
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
|
|
|
|
|
@ -167,17 +176,22 @@ HAYSTACK_CONNECTIONS = {
|
|
|
|
|
}
|
|
|
|
|
# Automatically update searching index
|
|
|
|
|
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
|
|
|
|
|
# Allow user login with username and password
|
|
|
|
|
# 用户认证后端配置
|
|
|
|
|
AUTHENTICATION_BACKENDS = [
|
|
|
|
|
'accounts.user_login_backend.EmailOrUsernameModelBackend']
|
|
|
|
|
'accounts.user_login_backend.EmailOrUsernameModelBackend' # 支持邮箱或用户名登录
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
STATIC_ROOT = os.path.join(BASE_DIR, 'collectedstatic')
|
|
|
|
|
# 静态文件配置 (CSS, JavaScript, Images)
|
|
|
|
|
STATIC_ROOT = os.path.join(BASE_DIR, 'collectedstatic') # 静态文件收集目录(生产环境)
|
|
|
|
|
STATIC_URL = '/static/' # 静态文件的URL前缀
|
|
|
|
|
|
|
|
|
|
STATIC_URL = '/static/'
|
|
|
|
|
STATICFILES = os.path.join(BASE_DIR, 'static')
|
|
|
|
|
STATICFILES_DIRS = [
|
|
|
|
|
os.path.join(BASE_DIR, 'static'), # 静态文件目录
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
AUTH_USER_MODEL = 'accounts.BlogUser'
|
|
|
|
|
LOGIN_URL = '/login/'
|
|
|
|
|
# 用户模型配置
|
|
|
|
|
AUTH_USER_MODEL = 'accounts.BlogUser' # 自定义用户模型,替换Django默认用户模型
|
|
|
|
|
LOGIN_URL = '/login/' # 登录页面URL,未登录用户重定向到此地址
|
|
|
|
|
|
|
|
|
|
TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
|
|
|
|
|
DATE_TIME_FORMAT = '%Y-%m-%d'
|
|
|
|
|
@ -339,4 +353,6 @@ ACTIVE_PLUGINS = [
|
|
|
|
|
'external_links',
|
|
|
|
|
'view_count',
|
|
|
|
|
'seo_optimizer'
|
|
|
|
|
]
|
|
|
|
|
]
|
|
|
|
|
COMPRESS_ENABLED = False
|
|
|
|
|
COMPRESS_OFFLINE = False
|