当前位置: 首页 > article >正文

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

相关文章:

Django settings.py 文件全解析

本篇详细介绍 Django settings.py 文件各个配置项的教程,涵盖核心配置项的作用及最佳实践 一、基础配置 1. ​BASE_DIR BASE_DIR Path(__file__).resolve().parent.parent​作用:项目根目录路径,用于构建其他路径(如模板、静态…...

TSB - AD 解读 — 迈向可靠、透明的 TSAD 任务

目录 一 文章动机 二 TSAD 领域内的两类缺陷 三 数据集的构建 四 实验结果及结论 项目宣传链接:TSB-AD 代码链接: TheDatumOrg/TSB-AD: TSB-AD: Towards A Reliable Time-Series Anomaly Detection Benchmark 原作者解读:NeurIPS 2…...

下载 CSS 文件阻塞,会阻塞构建 DOM 树吗?会阻塞页面的显示吗?

下载 CSS 文件会对页面的渲染过程产生影响,具体是否阻塞 DOM 树的构建和页面的显示,取决于浏览器的渲染机制。 1. CSS 文件下载是否会阻塞 DOM 树的构建? 一般情况下,CSS 文件下载不会阻塞 DOM 树的构建: DOM 树的构建…...

6个月的Go语言学习甘特图路线图 从零基础到项目实战

以下是为期6个月的Go语言学习甘特图(2025年4月-2025年10月),包含详细阶段划分、对应资源及项目产出文档说明: #mermaid-svg-yQbkZCpCAXv6iXKC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fi…...

论文阅读:2023-arxiv Can AI-Generated Text be Reliably Detected?

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 文章目录 Abstract(摘要)1 Introduction(引言)Conclusion(结论) Can AI-Generated Text be Reliably D…...

查看IP地址/Ping 命令

目录 Windows Linux macOS Ping 命令 Windows 使用终端: 按下 Win R 键,打开“运行”对话框,输入 cmd 并按 Enter。 在命令提示符中输入 ipconfig,按 Enter。系统会显示网络适配器的详细信息,包括 IPv4 地址、子…...

Language Models are Few-Shot Learners,GPT-3详细讲解

GPT的训练范式:预训练Fine-Tuning GPT2的训练范式:预训练Prompt predict (zero-shot learning) GPT3的训练范式:预训练Prompt predict (few-shot learning) GPT2的性能太差,新意高&…...

鸿蒙编译框架@ohos/hvigor FileUtil用法

ohos/hvigor FileUtil用法 在鸿蒙(HarmonyOS)开发中,ohos/hvigor 的 FileUtil 是用于文件操作的实用工具类,提供了跨平台的文件读写、路径处理等常用方法。以下是其核心用法和示例: 一、核心方法说明 方法名功能描…...

Hoppscotch 开源API 开发工具

Hoppscotch 是一个开源的 API 开发工具,旨在为开发者提供一个轻量级、快速且功能丰富的 API 开发和调试平台。以下是对其主要特性和功能的详细介绍: 1. 轻量级与高效 Hoppscotch 采用简约的 UI 设计,注重易用性和高效性。它支持实时发送请求…...

Infura 简介

文章目录 Infura 简介Infura 的主要功能Infura 的替代方案(类似服务)AlchemyQuickNodeAnkrMoralisPocket Network 什么时候选择 Infura? Infura 简介 Infura 是一个 区块链基础设施即服务(BaaS, Blockchain as a Service&#xf…...

【芯片验证】面试题·对深度为60的数组进行复杂约束的技巧

朋友发给我的芯片验证笔试题,觉得很有意思,和大家分享一下。 面试题目 class A中一个长度为60的随机数组rand int arr[60],如何写约束使得: 1.每个元素的值都在(0,100]之间,且互不相等; 2.最少有三个元素满足勾股数要求,比如数组中包含3,4,5三个点; 请以解约束最快…...

Manus “Less structure,More intelligence ”独行云端处理器

根据市场调研机构Statista数据显示,全球的AR/AR的市场规模预计目前将达到2500亿美元,Manus作为VR手套领域的领军企业,足以颠覆你的认知。本篇文章将带你解读Manus产品,针对用户提出的种种问题,Manus又将如何解决且让使…...

【再读】R1-Onevision通过跨模态形式化为复杂多模态推理任务提供了系统性解决方案

R1-Onevision:跨模态形式化驱动的多模态推理技术突破,R1-Onevision通过跨模态形式化、双阶段训练和教育级基准测试,为多模态推理树立了新标杆。其技术创新不仅提升了模型在复杂任务中的表现,更重要的是为行业提供了一种可解释、可迁移的多模态处理范式。随着形式化方法的不断…...

Mysql-经典实战案例(3): pt-archiver 实现 MySQL 千万级大表分库分表(上)

零基础实战:使用 pt-archiver 实现 MySQL 千万级大表的水平分表(Hash分片) 本文适合人群:MySQL新手、想低成本实践数据库分表的开发者 环境要求:MySQL 5.7、Linux系统(建议CentOS/Ubuntu) 你将学…...

使用JSON存储数据的场景

Json 作为一种通用的数据格式,由于其结构灵活、可拓展等特点,在某些场景下我们也会直接将数据以 Json 格式存储到数据库中。 本文将探讨在开发中使用 JSON 存储数据的常见场景,并通过具体的实例帮助大家更好地理解其应用。 1. 半结构化数据…...

文生图网站推荐(2025.3)

以下是2024-2025年期间值得推荐的文生图网站,综合了免费性、中文友好度、操作便捷性及功能特色,涵盖不同用户需求: 一、国内主流平台 通义万相(阿里云) 特点:每日免费50次生成,模型和风格多样&a…...

网页制作代码html制作一个网页模板

制作一个简单而实用的网页模板:HTML基础入门 在数字时代,网页已成为信息展示和交流的重要平台。HTML(HyperText Markup Language)作为网页制作的基础语言,为开发者提供了构建网页的基本框架。本文将带你了解如何使用H…...

AI视觉测试工具实战评测:以Applitools为例的技术解析与行业应用

在数字化转型的浪潮中,软件界面(UI/UX)的复杂性与迭代速度呈指数级增长。传统的人工视觉测试不仅耗时费力,且难以应对多平台、多分辨率下的界面一致性问题。AI视觉测试工具的出现,通过智能图像识别与自动化对比&#x…...

SSM框架——Spring面试题

Spring常见面试题 Spring框架中的单例bean是线程安全的吗 不是线程安全的 Spring框架中有一个Scope注解,默认的值就是singleton,单例的。 因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可…...

华为OD机试 - 计算观看演唱会场次(Java 2023 B卷 200分)

题目描述 为了庆祝中国共产党成立100周年,某公园将举行多场文艺表演。由于演出分布在不同的场地,一个人只能同时观看一场演出,且不能迟到早退。连续观看的演出之间最少需要有15分钟的时间间隔。小明是一个狂热的文艺迷,想观看尽可…...

云原生大佬重生,记忆逐步复苏(十三:selinux模块)

目录 1:什么是selinux 1.1 SELinux 的作用 1.2. SELinux 的工作原理 1.3. SELinux 的运行模式 2:解析selinux文件上下文标签策略 3:selinux的布尔值 4:调查和解决selinux问题 1:什么是selinux SELinux(Security-Enhanced L…...

Redis hyperloglog学习

背景知识 【伯努利试验】: 【伯努利试验】是一个概率论中的概念,指在相同的条件下重复进行n次独立的试验,每次试验只有两种可能的结果,且这两种结果发生的概率是固定的 抛硬币作为伯努利试验:在抛硬币时,我…...

MySQL高频八股——事务过程中Undo log、Redo log、Binlog的写入顺序(涉及两阶段提交)

大家好,我是钢板兽! 在上一篇文章中,我分别介绍了 Undo Log、Redo Log 和 Binlog 在事务执行过程中的作用与写入机制。然而,实际应用中,这三种日志的写入是有先后顺序的。因此,本篇文章将深入探讨它们的写…...

二阶近似 是什么意思

二阶近似 是什么意思 一、二阶近似的概念与举例 二阶近似是数学分析中通过泰勒展开对函数进行近似的方法,保留到二阶项(即包含一阶导数和二阶导数)。在优化问题(如模型训练)中,常用于近似损失函数,帮助更精准地更新模型参数。 举例: 假设损失函数为 L ( θ ) \mathc…...

Oracle GoldenGate 全面解析

Oracle GoldenGate 全面解析 Oracle GoldenGate 是一种实时数据集成和复制解决方案,广泛应用于数据同步、数据库迁移、高可用性和灾难恢复等场景。以下将详细解答您提出的关于 Oracle GoldenGate 的一系列问题。 1. Oracle GoldenGate 的架构组成及其核心组件的作用 架构组成…...

C++进阶——AVL树的实现

1、AVL的概念 1.1 AVL 树的发明 AVL 树由 G.M. Adelson-Velsky 和 E.M. Landis 在 1962 年的论文《An algorithm for the organization of information》中提出。他们的设计目标是解决二叉搜索树在动态操作(插入、删除)中可能退化为链表的问题。 1.2 …...

S32K144入门笔记(十三):LPIT的API函数解读

目录 1. SDK中的函数 2. API函数的释义 2.1 获取默认参数 2.2 初始化 2.3 启动与停止 2.4 计数值的设置于读取 2.5 中断API 1. SDK中的函数 在使用SDK的非抽象驱动函数时,函数的定义与声明在文件lpit_driver.c和lpit_driver.h中,一共有19个函数&a…...

打包当前Ubuntu镜像 制作Ubuntu togo系统

我的系统的基本情况说明: 我原来的系统的具体型号如下: uname -rLinux Engine 5.15.0-134-generic #145~20.04.1-Ubuntu SMP Mon Feb 17 13:27:16 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux我原来的硬盘以及分区策略如下: 可以看到我的分区…...

系统架构设计师—案例分析—架构设计

文章目录 经典架构风格对比面向对象架构风格/显示调用风格优点缺点举例 事件驱动的系统/隐式调用风格优点缺点举例 基于规则的系统架构风格优点缺点举例 管道过滤器风格优点缺点举例 仓库风格优点缺点举例 解释器风格优点缺点举例 分层架构风格优点缺点举例 经典架构风格对比 …...

基于javaweb的SpringBoot智能相册管理系统图片相册系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...