【django】2-2 (django配置) 数据库配置、缓存配置

文章目录

  • 5 数据库配置
    • 5.1 常用配置项
    • 5.2 数据库配置示例
    • 5.3 其它数据库配置选项
  • 6 缓存
    • 6.1 常用配置项
    • 6.2 内置的缓存后端
    • 6.3 缓存配置示例
    • 6.4 缓存中间件的配置


创建django项目后,会自动生成初始的项目文件如下:

manage.py           # 管理django项目的命令行工具
django_pro/         # 项目的python包__init__.py		# 表示当前文件夹是一个python包settings.py     # 项目的配置文件urls.py         # 项目的URL声明asgi.py         # 项目运行在兼容ASGI的web服务器上的入口wsgi.py         # 项目运行在兼容WSGI的web服务器上的入口

settings.py文件包含了项目的基础配置。以下是数据库配置和缓存配置的内容。

settings.py可选的全部配置见:django配置


5 数据库配置

DATABASES用于配置项目使用的数据库连接信息。

DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}

DATABASES是字典,字典的键是数据库的别名,值是包含数据库连接参数的字典。'default'键是必须有的。

一个django项目可以配置多个数据库,适用于读写分离、分库的场景。

5.1 常用配置项

  • ENGINE 指定数据库后端
  • NAME 数据库的名称,对与SQLite是文件路径
  • USER 连接数据库的用户名
  • PASSWORD 连接数据库的密码
  • HOST 数据库服务器的主机地址,默认使用本地连接
  • PORT 数据库服务器的端口号,默认使用数据库的默认端口
  • OPTIONS 额外的数据库连接选项,字典格式
  • ATOMIC_REQUESTS 是否把每个HTTP请求包装子啊一个数据库事务中。
    为True时,每个请求都会开启一个事务,请求成功则提交,失败则回滚。
  • CONN_MAX_AGE 数据库连接的最大存活时间
    为0表示每次请求后关闭连接,为None表示一致保持连接。
  • TEST 配置测试数据库的参数

5.2 数据库配置示例

SQLite

DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}

PostgreSQL

DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql','NAME': 'mydatabase','USER': 'myuser','PASSWORD': 'mypassword','HOST': 'localhost','PORT': '5432',}
}

MySQL

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'mydatabase','USER': 'myuser','PASSWORD': 'mypassword','HOST': 'localhost','PORT': '3306','OPTIONS': {'charset': 'utf8mb4',},}
}

5.3 其它数据库配置选项

  • DATABASE_ROUTERS 使用数据库路由器。
    数据库路由器需要自己定义。用于指定应用使用哪一个数据库配置。
  • DEFAULT_TABLESPACE 对未指定表空间的模型,使用默认表空间。
  • DEFAULT_INDEX_TABLESPACE 对未指定索引的字段上使用默认表空间。

    PostgreSQL和Oracle支持表空间,可用于优化数据库表现。

  • DEFAULT_AUTO_FIELD 默认的主键字段类型
    默认值为'django.db.models.AutoField',用于无主键模型。

6 缓存

CACHES用于配置项目使用的缓存。它是一个嵌套的字典,把缓存别名映射到单个缓存选项。
CACHES配置也必须有一个default选项,它的默认值为:

{"default": {"BACKEND": "django.core.cache.backends.locmem.LocMemCache",}
}

6.1 常用配置项

  • BACKEND 使用哪个后端进行缓存
    可以使用内置的缓存后端,也可以写为缓存后端类的点分隔路径。
  • LOCATION 缓存位置。
    可以是文件系统缓存的目录,缓存服务器的主机和端口,或本地内存缓存的识别名称。
  • KEY_FUNCTION 由点分隔路径指定的函数,该函数定义如何将前缀、版本和密钥组成缓存密钥。
  • KEY_PREFIX 自动包含在所有缓存键中的字符串。
  • OPTIONS 传递给缓存后端的额外参数。
  • TIMEOUT 缓存的过期时间,默认为300,单位秒。
  • VERSION 缓存密钥的默认版本号。

6.2 内置的缓存后端

  • django.core.cache.backends.locmem.LocMemCache
    本地内存缓存。
    简单快速,一般用在开发环境。多进程时无效,适合单机调试。
  • django.core.cache.backends.filebased.FileBasedCache
    文件缓存。
    性能低,适合小项目或无法使用内存缓存或数据库缓存的场景。
  • django.core.cache.backends.db.DatabaseCache
    数据库缓存。
    性能一般,适合没有Redis或Memcached缓存但是又需要持久化的场景。
    需要先创建缓存表。
  • django.core.cache.backends.dummy.DummyCache
    虚拟缓存。
    仅实现缓存接口,但不实际存储数据。适合测试或禁用缓存。
  • django.core.cache.backends.memcached.PyMemcacheCache
    Memcached缓存,使用python-memcached库。
    Memcached缓存是高性能分布式缓存,支持服务器集群,适合生产环境。
  • django.core.cache.backends.memcached.PyLibMCCache
    Memcached缓存,使用pylibmc库。
  • django.core.cache.backends.redis.RedisCache
    Redis缓存,需安装redis库。
    高性能,支持持久化。

    安装三方库django-redis后,可以使用django_redis.cache.RedisCache做为Redis缓存后端。

6.3 缓存配置示例

内存缓存

CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache','LOCATION': 'unique-snowflake','TIMEOUT': 3600,'OPTIONS': {'MAX_ENTRIES': 1000,}}
}

文件缓存

CACHES = {'default': {'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache','LOCATION': '/var/tmp/django_cache','TIMEOUT': 3600,}
}

数据库缓存

CACHES = {'default': {'BACKEND': 'django.core.cache.backends.db.DatabaseCache','LOCATION': 'my_cache_table',  # 数据库表名}
}

Redis缓存,使用三方库django-redis

CACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://192.168.32.130:6379","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient","CONNECTION_POOL_KWARGS": {"max_connections": 100},"DECODE_RESPONSES":True,"PASSWORD": "root",}}
}

Redis缓存,django本身和redis库的绑定

CACHES = {"default": {"BACKEND": "django.core.cache.backends.redis.RedisCache","LOCATION": "redis://username:password@127.0.0.1:6379",}
}

Memcached缓存

CACHES = {'default': {'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache','LOCATION': '127.0.0.1:11211',  # Memcached 服务器地址}
}

虚拟缓存

CACHES = {'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache',}
}

6.4 缓存中间件的配置

MIDDLEWARE设置时,可以设置django内置的两个中间件用于缓存站点页面:

  1. django.middleware.cache.UpdateCacheMiddleware 在请求阶段从缓存中获取页面。
  2. django.middleware.cache.FetchFromCacheMiddleware 在响应阶段缓存页面。

注意 由于中间件执行顺序的原因,UpdateCacheMiddleware必须放在MIDDLEWARE列表的第一位,FetchFromCacheMiddleware必须放在列表最后一位。

设置缓存中间件后,可以在settings.py文件操作以下配置:

  • CACHE_MIDDLEWARE_ALIAS 用于缓存中间件的缓存链接,默认'default'
  • CACHE_MIDDLEWARE_KEY_PREFIX 缓存中间件生成的缓存密钥的前缀字符串
  • CACHE_MIDDLEWARE_SECONDS 缓存中间件缓存每个页面的秒数,默认600。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【博客】使用GithubAction自动同步obisidian和hexo仓库

使用Github Action自动同步obisidian和hexo仓库,避免手动操作。 本文首发于❄慕雪的寒舍 1. 烦恼 先来说说慕雪现在的笔记和博客是怎么管理的吧,我正在使用两套笔记软件 思源笔记:私密性高一些,不是博客的笔记都在这里面。由于思…

scala简介和基础语法

Scala简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序。Scala 源代码被编译成 Java 字节码,所以它可…

7.4考研408数据结构B树与B+树专题深度解析

考研408数据结构B树与B+树专题深度解析 一、B树(B-Tree) 1.1 定义与性质 定义: B树是一种平衡多路查找树,满足以下条件: 阶数:每个结点最多有 m m m个子树( m ≥

WEB安全--RCE--RCE的危险函数

一、命令执行 1.1、命令执行原理 <?php $cmd $_GET[cmd]; // 直接获取用户输入 system($cmd); // 不安全 ?>#payload: http://example.com/vuln.php?cmdwhoami#结果: www-data 1.2、危险函数 1.2.1、system() 介绍&#xff1a; 执行外部命令&#xff0c;将命令…

Linux C++ 利用 io_uring 技术批量读取 tun 文件描述符的数据。

以下是参考的实现代码&#xff0c;IO_URING 操作必须要进行按页大小对齐&#xff08;仅在O_DIRECT直接I/O下&#xff09;&#xff0c;不能是非对称的&#xff0c;一般大多数操作系统页大小为&#xff1a;4KB。 批量读取、writev 批量简写。 static constexpr int MTU ITap::M…

时序数据库:InfluxDB命令行操作

学习 InfluxDB 的命令行操作至关重要&#xff0c;它不仅是与数据库直接交互的工具&#xff0c;也是理解 InfluxDB 核心概念的关键途径。通过命令行&#xff0c;用户可以高效地执行数据库管理、数据查询和插入等任务&#xff0c;深入掌握 InfluxQL 的语法及功能。这对于调试、快…

Bootstrap 表格:高效布局与动态交互的实践指南

Bootstrap 表格:高效布局与动态交互的实践指南 引言 Bootstrap 是一个流行的前端框架,它为开发者提供了丰富的组件和工具,使得构建响应式、美观且功能丰富的网页变得更加简单。表格是网页中常见的元素,用于展示数据。Bootstrap 提供了强大的表格组件,可以帮助开发者轻松…

⑥ ACG-系统管理

上网管理行为是指对员工在工作时间内使用公司网络的行为进行管理和监督。在企业中&#xff0c;系统管理是实施上网管理行为的重要方式之一。系统管理包括以下几个方面&#xff1a; 1. 访问控制&#xff1a;通过设置网络访问权限&#xff0c;对员工访问特定网站或使用特定应用程…

【Docker】Dockerfile 优化工具 hadolint

本文内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01; 如果对您有帮助&#xff0c;烦请点赞、关注、转发、订阅专栏&#xff01; 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】&#xff08;全…

接口自动化——初识pytest

缩写单词含义.passed通过Ffailed失败&#xff08;用例执行时报错&#xff09;Eerror出错&#xff08;fixture执行报错&#xff09;sskipped跳过Xxpassed预期外的通过&#xff08;不符合预期&#xff09;xxfailed预期内的失败&#xff08;符合预期&#xff09; 1.pytest 配置 1…

leetcode日记(100)填充每个节点的下一个右侧节点指针

和层序遍历差不多的思路&#xff0c;将节点储存在队列里&#xff0c;一边取出节点一边放入取出节点的左右节点&#xff0c;直到队列空。 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NU…

MySQL配置文件my.cnf详解

目前使用的服务器系统是CentOS8.5 ,针对MySql8.4的配置示例&#xff0c;自己根据实际情况修改。 安装MySql8.4时&#xff0c;MySql8.4没有默认的my.cnf,需要用户根据需要自行配置my.cnf文件&#xff0c;大概可看到下面这样的参数列表&#xff0c;可能不同版本的mysql参数多少会…

【解决】XCode不支持旧版本的iOS设备

办法&#xff1a; 手动添加设备支持文件&#xff08;暂时解决方式&#xff09; 如果您无法立即升级 Xcode&#xff0c;也可以通过下载设备支持文件来暂时解决问题。 检查当前设备的 iOS 版本&#xff1a; 连接设备到 Mac&#xff0c;打开 Xcode 查看提示的 iOS 版本。例如&…

每日c/c++题 备战蓝桥杯(全排列问题)

题目描述 按照字典序输出自然数 1 到 n 所有不重复的排列&#xff0c;即 n 的全排列&#xff0c;要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 n。 输出格式 由 1∼n 组成的所有不重复的数字序列&#xff0c;每行一个序列。 每个数字保留 5 个场…

注意力蒸馏技术

文章目录 摘要abstract论文摘要简介方法预备知识注意力蒸馏损失注意力引导采样 实验结论总结参考文献 摘要 本周阅读了一篇25年二月份发表于CVPR 的论文《Attention Distillation: A Unified Approach to Visual Characteristics Transfer》,论文开发了Attention Distillation…

flutter android端抓包工具

flutter做的android app&#xff0c;使用fiddler抓不了包&#xff0c;现介绍一款能支持flutter的抓包工具Reqable&#xff0c;使用方法如下&#xff1a; 1、下载电脑端安装包 下载地址为【https://reqable.com/zh-CN/download/】 2、还是在上述地址下载 android 端apk&#xf…

PyTorch单机多卡训练(DataParallel)

PyTorch单机多卡训练 nn.DataParallel 是 PyTorch 中用于多GPU并行训练的一个模块&#xff0c;它的主要作用是将一个模型自动拆分到多个GPU上&#xff0c;并行处理输入数据&#xff0c;从而加速训练过程。以下是它的核心功能和工作原理&#xff1a; 1、主要作用 数据并行&am…

PyTorch中的Tensor

PyTorch中的Tensor‌ 是核心数据结构&#xff0c;类似于 NumPy 的多维数组&#xff0c;但具备 GPU 加速和自动求导等深度学习特性。 一、基本概念 ‌核心数据结构‌ Tensor 是存储和操作数据的基础单元&#xff0c;支持标量&#xff08;0D&#xff09;、向量&#xff08;1D&am…

基于Python的图书馆信息管理系统研发

标题:基于Python的图书馆信息管理系统研发 内容:1.摘要 在数字化信息快速发展的背景下&#xff0c;传统图书馆管理方式效率低下&#xff0c;难以满足日益增长的信息管理需求。本研究旨在研发一款基于Python的图书馆信息管理系统&#xff0c;以提高图书馆信息管理的效率和准确性…

RCE复现

1.过滤flag <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__);代码审计过滤了"flag"关键词&#xff0c;但限制较弱&#xff0c;容易绕过 ?csystem("ls&…