本篇详细介绍 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应用性能
- 灵活扩展功能(如缓存、邮件服务)
- 实现多语言支持与国际化部署
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论