96 lines
2.5 KiB
Python
96 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Django 配置文件。
|
|
"""
|
|
import os
|
|
import sys
|
|
|
|
from server.config import DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME
|
|
|
|
# ─── 基础 ───
|
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
SECRET_KEY = os.getenv("DJANGO_SECRET_KEY", "boss-dp-secret-key-change-in-production")
|
|
# 调试模式:默认开启;生产环境可设置 DJANGO_DEBUG=0 关闭
|
|
DEBUG = os.getenv("DJANGO_DEBUG", "1").lower() in ("true", "1", "yes")
|
|
ALLOWED_HOSTS = ["*"]
|
|
|
|
# ─── 应用 ───
|
|
INSTALLED_APPS = [
|
|
"django.contrib.contenttypes",
|
|
"rest_framework",
|
|
"channels",
|
|
"server",
|
|
]
|
|
|
|
# ─── 中间件 ───
|
|
MIDDLEWARE = [
|
|
"django.middleware.common.CommonMiddleware",
|
|
"server.middleware.CorsMiddleware",
|
|
"server.middleware.ResponseCodeMiddleware",
|
|
]
|
|
|
|
# ─── URL / ASGI ───
|
|
ROOT_URLCONF = "server.urls"
|
|
ASGI_APPLICATION = "server.asgi.application"
|
|
|
|
# ─── 数据库 ───
|
|
DATABASES = {
|
|
"default": {
|
|
"ENGINE": "django.db.backends.mysql",
|
|
"NAME": DB_NAME,
|
|
"USER": DB_USER,
|
|
"PASSWORD": DB_PASSWORD,
|
|
"HOST": DB_HOST,
|
|
"PORT": str(DB_PORT),
|
|
"OPTIONS": {
|
|
"charset": "utf8mb4",
|
|
},
|
|
}
|
|
}
|
|
|
|
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
|
|
|
# ─── DRF ───
|
|
REST_FRAMEWORK = {
|
|
"DEFAULT_AUTHENTICATION_CLASSES": [
|
|
"server.core.authentication.HeaderAuthorizationAuthentication",
|
|
],
|
|
"DEFAULT_PERMISSION_CLASSES": [
|
|
"rest_framework.permissions.IsAuthenticated",
|
|
],
|
|
"UNAUTHENTICATED_USER": None,
|
|
"DEFAULT_RENDERER_CLASSES": [
|
|
"rest_framework.renderers.JSONRenderer",
|
|
],
|
|
"DEFAULT_PARSER_CLASSES": [
|
|
"rest_framework.parsers.JSONParser",
|
|
"rest_framework.parsers.FormParser",
|
|
"rest_framework.parsers.MultiPartParser",
|
|
],
|
|
"EXCEPTION_HANDLER": "server.core.exception_handler.custom_exception_handler",
|
|
"DATETIME_FORMAT": "%Y-%m-%dT%H:%M:%S",
|
|
}
|
|
|
|
# ─── Channels ───
|
|
CHANNEL_LAYERS = {
|
|
"default": {
|
|
"BACKEND": "channels.layers.InMemoryChannelLayer",
|
|
}
|
|
}
|
|
|
|
# ─── 时区 / 国际化 ───
|
|
LANGUAGE_CODE = "zh-hans"
|
|
TIME_ZONE = "Asia/Shanghai"
|
|
USE_I18N = True
|
|
USE_TZ = False
|
|
|
|
# ─── 静态文件和媒体文件 ───
|
|
STATIC_URL = "/static/"
|
|
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
|
|
|
|
MEDIA_URL = "/media/"
|
|
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
|
|
|
|
# 导出文件目录
|
|
EXPORT_ROOT = os.path.join(MEDIA_ROOT, "exports")
|