跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Django设置文件
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Django设置文件 = == 简介 == Django设置文件(通常命名为'''settings.py''')是Django项目的核心配置文件,它包含了项目运行所需的所有配置参数。这个文件在项目创建时自动生成,位于项目目录的根路径下。设置文件使用Python模块的形式定义配置,允许开发者通过修改变量值来调整项目行为。 == 文件结构 == 典型的Django设置文件包含以下主要部分(按常见顺序排列): <syntaxhighlight lang="python"> # 项目基础配置 BASE_DIR = Path(__file__).resolve().parent.parent SECRET_KEY = 'your-secret-key-here' DEBUG = True ALLOWED_HOSTS = [] # 应用配置 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', # 用户自定义应用 ] # 中间件配置 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', ] # 数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } # 其他配置... </syntaxhighlight> == 关键配置详解 == === 基础配置 === * '''BASE_DIR''':项目根目录路径,通常使用<code>Path(__file__).resolve().parent.parent</code>自动获取 * '''SECRET_KEY''':用于加密会话、密码重置令牌等的密钥(生产环境必须保密!) * '''DEBUG''':调试模式开关(开发时设为True,生产环境必须设为False) * '''ALLOWED_HOSTS''':允许访问项目的主机名/域名列表(生产环境必须配置) === 应用配置 === '''INSTALLED_APPS'''列表定义了项目中启用的所有Django应用,包括: * Django内置应用(如admin、auth等) * 第三方应用 * 用户自定义应用 === 数据库配置 === Django支持多种数据库后端,通过'''DATABASES'''字典配置: <syntaxhighlight lang="python"> # PostgreSQL示例配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '5432', } } </syntaxhighlight> == 环境敏感配置 == 最佳实践是将敏感配置(如SECRET_KEY、数据库密码等)与环境变量分离: <syntaxhighlight lang="python"> import os SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY') DEBUG = os.environ.get('DJANGO_DEBUG', 'False') == 'True' </syntaxhighlight> == 多环境配置 == 大型项目通常需要不同的环境配置(开发/测试/生产),可通过以下方式实现: 1. 创建多个设置文件(如<code>settings_dev.py</code>, <code>settings_prod.py</code>) 2. 使用环境变量指定当前环境: <syntaxhighlight lang="python"> # settings.py from .settings_base import * env = os.environ.get('DJANGO_ENV', 'dev') if env == 'prod': from .settings_prod import * else: from .settings_dev import * </syntaxhighlight> == 实际案例 == === 静态文件配置 === 配置静态文件(CSS、JavaScript、图片)服务: <syntaxhighlight lang="python"> STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] </syntaxhighlight> === 国际化配置 === 设置语言和时区: <syntaxhighlight lang="python"> LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = True </syntaxhighlight> == 配置继承关系 == <mermaid> graph TD A[settings.py] --> B[global_settings.py] A --> C[settings_dev.py/settings_prod.py] C --> A </mermaid> Django配置加载顺序: 1. 首先加载Django内置的<code>global_settings.py</code> 2. 然后加载项目的<code>settings.py</code> 3. 最后加载环境特定的设置文件 == 数学表示 == 配置优先级可以用以下公式表示: <math> 最终配置 = global\_settings \cup (settings \cup env\_settings) </math> 其中<math>\cup</math>表示配置合并,后者覆盖前者。 == 安全注意事项 == * 永远不要将<code>SECRET_KEY</code>提交到版本控制系统 * 生产环境必须设置<code>DEBUG=False</code> * 使用<code>ALLOWED_HOSTS</code>限制可访问域名 * 数据库密码等敏感信息应通过环境变量配置 == 高级用法 == === 动态配置 === 可以在运行时动态修改配置: <syntaxhighlight lang="python"> from django.conf import settings settings.configure( DEBUG=True, SECRET_KEY='...', # 其他配置... ) </syntaxhighlight> === 自定义设置 === 可以添加项目特定的自定义设置: <syntaxhighlight lang="python"> # 自定义配置 MAX_UPLOAD_SIZE = 1024 * 1024 * 10 # 10MB FEATURE_FLAGS = { 'new_ui': True, 'experimental_api': False, } </syntaxhighlight> == 总结 == Django设置文件是项目的控制中心,合理配置对项目开发和部署至关重要。掌握设置文件的各项配置能帮助开发者更好地控制项目行为,适应不同环境需求。记住要遵循安全最佳实践,特别是生产环境的配置安全。 [[Category:后端框架]] [[Category:Django]] [[Category:Django基础]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)