# 第1课练习:Django项目配置与开发/生产环境拆分 # # 练习目标: # 1. 将当前单文件settings.py拆分为base、development和production三个配置模块。 # 2. 让本地管理命令默认使用开发配置,让ASGI和WSGI默认使用生产配置。 # 3. 验证生产密钥缺失时快速失败,提供临时变量后能够通过普通系统检查。 # # 操作要求: # 1. 在JobRadar包内创建settings目录和__init__.py。 # 2. 把公共配置迁移到base.py,并根据新目录层级修正BASE_DIR。 # 3. 在development.py中配置仅限本地使用的SECRET_KEY、DEBUG和ALLOWED_HOSTS。 # 4. 在production.py中从外部读取DJANGO_SECRET_KEY、DJANGO_ALLOWED_HOSTS和 # DJANGO_CSRF_TRUSTED_ORIGINS,固定关闭DEBUG并配置HTTPS安全项。 # 5. 调整manage.py、asgi.py和wsgi.py使用正确的默认配置模块。 # 6. 确认全部配置迁移后再删除旧settings.py。 # # 预期结果: # 1. 开发配置执行Django系统检查时通过。 # 2. 未设置DJANGO_SECRET_KEY时,生产配置检查明确失败。 # 3. 设置三个临时生产变量后,生产配置普通检查通过。 # 4. 项目根目录仍是BASE_DIR,SQLite和templates路径没有移动到JobRadar包中。 # 5. Git变更中不存在真实密钥、密码或Cookie。 # # 自检问题: # 1. DJANGO_SETTINGS_MODULE保存的是文件路径还是Python模块路径? # 2. 为什么生产配置不应该为SECRET_KEY提供默认值? # 3. 为什么DEBUG=False时必须正确设置ALLOWED_HOSTS? # 4. 为什么manage.py和ASGI/WSGI选择不同的默认配置? # 5. 为什么本课暂时不配置PostgreSQL和Agents SDK? # # 验收命令: # python manage.py check --settings=JobRadar.settings.development # python manage.py check --settings=JobRadar.settings.production # python manage.py check --deploy --settings=JobRadar.settings.production # python manage.py makemigrations --check --dry-run --settings=JobRadar.settings.development # git diff --check # # 验收标准: # 1. 能解释三个配置文件各自负责什么。 # 2. 能解释BASE_DIR层级变化。 # 3. 能复现生产密钥缺失时的失败,并确认这是预期安全行为。 # 4. 能区分普通系统检查错误与部署安全告警。 # 5. practice.py保持纯注释,不在此文件填写答案或运行记录。