From 2a7f08fd142dd7a114973c7c0addab74885b919a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Tue, 15 Sep 2026 11:27:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Task1=20=E8=B4=A8=E9=87=8F=E5=AE=A1?= =?UTF-8?q?=E6=9F=A5=E4=BF=AE=E5=A4=8D=EF=BC=88RuntimeError=20fail-fast/AL?= =?UTF-8?q?LOWED=5FHOSTS=20strip/lock=20=E6=B8=85=E7=90=86/=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=BC=93=E5=AD=98=E9=9A=94=E7=A6=BB=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Code --- server/config/settings.py | 10 ++++++---- server/config/settings_test.py | 1 + server/requirements.lock.txt | 5 ----- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/server/config/settings.py b/server/config/settings.py index dba7863..bf7bb24 100644 --- a/server/config/settings.py +++ b/server/config/settings.py @@ -5,10 +5,12 @@ import os BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY", "dev-insecure") DEBUG = os.environ.get("DJANGO_DEBUG", "0" if os.environ.get("DJANGO_ENV") == "prod" else "1") == "1" -ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS", "*").split(",") -if os.environ.get("DJANGO_ENV") == "prod": # 生产 fail-fast:漏配即启动崩溃,不带病上线 - assert SECRET_KEY != "dev-insecure", "生产必须配置 DJANGO_SECRET_KEY" - assert os.environ.get("DJANGO_ALLOWED_HOSTS"), "生产必须显式配置 DJANGO_ALLOWED_HOSTS" +ALLOWED_HOSTS = [h.strip() for h in os.environ.get("DJANGO_ALLOWED_HOSTS", "*").split(",") if h.strip()] +if os.environ.get("DJANGO_ENV") == "prod": # 生产 fail-fast:漏配即启动崩溃,不带病上线(raise 而非 assert,防 -O 剥离) + if SECRET_KEY == "dev-insecure": + raise RuntimeError("生产必须配置 DJANGO_SECRET_KEY") + if not os.environ.get("DJANGO_ALLOWED_HOSTS"): + raise RuntimeError("生产必须显式配置 DJANGO_ALLOWED_HOSTS") INSTALLED_APPS = [ "django.contrib.contenttypes", diff --git a/server/config/settings_test.py b/server/config/settings_test.py index efdcc6d..34ff8ce 100644 --- a/server/config/settings_test.py +++ b/server/config/settings_test.py @@ -1,2 +1,3 @@ from .settings import * DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": ":memory:"}} +CACHES = {"default": {"BACKEND": "django.core.cache.backends.locmem.LocMemCache"}} # 内存缓存,避免文件缓存限流计数在重跑间残留 diff --git a/server/requirements.lock.txt b/server/requirements.lock.txt index ae21340..a71bc7e 100644 --- a/server/requirements.lock.txt +++ b/server/requirements.lock.txt @@ -1,16 +1,11 @@ # 由 pip freeze 生成,剔除测试依赖;部署用 requirements.txt asgiref==3.12.1 -colorama==0.4.6 Django==5.2.17 django-cors-headers==4.9.0 djangorestframework==3.18.1 djangorestframework_simplejwt==5.5.1 gunicorn==26.2.0 -iniconfig==2.3.0 -packaging==26.3 -pluggy==1.6.0 py-ip2region==3.0.4 -Pygments==2.21.0 PyJWT==2.14.0 PyMySQL==1.2.0 sqlparse==0.6.0