当前位置: 代码网 > it编程>前端脚本>Python > Django中的settings.py文件使用全解析

Django中的settings.py文件使用全解析

2025年03月18日 Python 我要评论
本篇详细介绍 django settings.py 文件各个配置项的教程,涵盖核心配置项的作用及最佳实践一、基础配置1. ​base_dirbase_dir = path(__file__).reso

本篇详细介绍 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应用性能
  • 灵活扩展功能(如缓存、邮件服务)
  • 实现多语言支持与国际化部署

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com