本篇详细介绍 django settings.py 文件各个配置项的教程,涵盖核心配置项的作用及最佳实践
一、基础配置
1. base_dir
base_dir = path(__file__).resolve().parent.parent
- 作用:项目根目录路径,用于构建其他路径(如模板、静态文件路径)
- ^注意:使用 path 对象更安全,替代传统的 os.path.dirname()
2. secret_key
secret_key = 'django-insecure-xxxxxxxx'
作用:用于加密签名(session、密码重置等)
安全建议:
- 永远不要提交到版本控制
- 生产环境使用环境变量加载:
import os secret_key = os.environ.get('django_secret_key')
3.debug
debug = true
- 作用:开启调试模式(显示详细错误页面)
- 生产环境必须关闭:
debug = false
4. allowed_hosts
allowed_hosts = ['example.com', '127.0.0.1']
- 作用:允许访问的域名/ip白名单
- 开发环境配置:
allowed_hosts = ['*'] # 仅限开发环境!
二、应用与中间件
1. installed_apps
# 注册内置、第三方、自己写的app installed_apps = [ 'django.contrib.admin', # 管理后台 'django.contrib.auth', # 认证系统 'django.contrib.contenttypes', # 提供 通用模型关系系统,允许任意模型之间建立动态关联 'django.contrib.sessions', # 会话管理 'django.contrib.messages', # 提供 一次性消息传递系统,用于在页面跳转间临时存储提示信息(如操作成功/失败提示) 'django.contrib.staticfiles', # 静态文件处理 'myapp.apps.myappconfig', # 自定义应用 'rest_framework', # 第三方应用 ]
2. middleware
# 注册内置、第三方、自己写的中间件 middleware = [ 'django.middleware.security.securitymiddleware', # 安全相关头信息 'django.contrib.sessions.middleware.sessionmiddleware', # 会话管理 'django.middleware.common.commonmiddleware', 'django.middleware.csrf.csrfviewmiddleware', # csrf保护 'django.contrib.auth.middleware.authenticationmiddleware', 用户认证 'django.contrib.messages.middleware.messagemiddleware', 'django.middleware.clickjacking.xframeoptionsmiddleware', ]
三、数据库配置
1. databases
databases = { 'default': { 'engine': 'django.db.backends.postgresql', 'name': 'mydatabase', 'user': 'mydbuser', 'password': 'mypassword', 'host': 'localhost', 'port': '5432', } }
支持的数据库引擎:
- sqlite3:轻量级本地数据库(开发用)
- postgresql:postgresql
- mysql:mysql
- oracle:oracle
2. 使用环境变量(生产推荐)
import os databases = { 'default': { 'engine': 'django.db.backends.postgresql', 'name': os.getenv('db_name'), 'user': os.getenv('db_user'), 'password': os.getenv('db_password'), 'host': os.getenv('db_host'), 'port': os.getenv('db_port'), } }
四、静态文件与媒体文件
1. static_url & static_root
static_url = '/static/' # 访问url前缀 static_root = base_dir / 'staticfiles' # collectstatic收集目录 staticfiles_dirs = [ # 额外静态文件目录 base_dir / 'static', ]
2. media_url & media_root
media_url = '/media/' # 用户上传文件访问路径 media_root = base_dir / 'media' # 文件存储路径
五、模板配置
1. templates
templates = [ { 'backend': 'django.template.backends.django.djangotemplates', 'dirs': [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', ], }, }, ]
六、国际化配置
1. 语言与时区
language_code = 'zh-hans' # 中文 time_zone = 'asia/shanghai' use_i18n = true # 启用国际化 use_tz = true # 使用时区
2. 多语言支持
locale_paths = [base_dir / 'locale'] # 翻译文件目录
七、安全配置(生产必须)
1. https 设置
secure_ssl_redirect = true # 强制https session_cookie_secure = true # 安全cookie csrf_cookie_secure = true # csrf cookie加密 secure_proxy_ssl_header = ('http_x_forwarded_proto', 'https')
2. 安全头信息
secure_content_type_nosniff = true secure_browser_xss_filter = true x_frame_options = 'deny' # 防止点击劫持
八、高级配置
1. 缓存配置
caches = { 'default': { 'backend': 'django.core.cache.backends.redis.rediscache', 'location': 'redis://127.0.0.1:6379/1', } }
2. 邮件配置
email_backend = 'django.core.mail.backends.smtp.emailbackend' email_host = 'smtp.example.com' email_port = 587 email_use_tls = true email_host_user = 'user@example.com' email_host_password = 'password'
九、最佳实践
1.环境分离:使用多个配置文件
settings/ ├── base.py ├── development.py └── production.py
2. 敏感信息管理:使用 python-dotenv
from dotenv import load_dotenv load_dotenv()
3. 性能优化:
databases['default']['conn_max_age'] = 300 # 数据库连接池
拓展:
通过合理配置 settings.py,您可以:
- 确保开发与生产环境的安全隔离
- 优化web应用性能
- 灵活扩展功能(如缓存、邮件服务)
- 实现多语言支持与国际化部署
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论