【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.pswp.cn/diannao/76161.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76161.shtml
英文地址,請注明出處:http://en.pswp.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&…