Django中的settings.py文件使用全解析
作者:Yant224
这篇文章主要介绍了Django中的settings.py文件使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
本篇详细介绍 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应用性能
- 灵活扩展功能(如缓存、邮件服务)
- 实现多语言支持与国际化部署
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。