django5入门【04】Django框架配置文件说明:settings.py

文章目录

    • 1. 基础路径配置
    • 2. 启动模式配置
    • 3. 站点访问权限配置
    • 4. App配置
    • 5. 中间件配置
    • 6. 模板配置
    • 7. 数据库配置
    • 8. 路由配置
    • 9. 语言与时区配置
    • 10. 静态文件配置
    • 11. 总结

在这里插入图片描述

1. 基础路径配置

settings.py文件中,通过BASE_DIR配置项来绑定项目的绝对路径。这个路径是动态计算的,所有项目文件都可以依赖这个路径。

from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
# 在项目中构建路径,如下所示:BASE_DIR / '子目录'
BASE_DIR = Path(__file__).resolve().parent.parent

2. 启动模式配置

DEBUG配置项决定了项目的启动模式:

  • DEBUG = True:开发模式,启用调试功能
  • DEBUG = False:生产模式,禁用调试
DEBUG = True

3. 站点访问权限配置

ALLOWED_HOSTS用于设置允许访问项目的网络地址列表:

  • 空列表[]:仅允许127.0.0.1localhost 以及[::1]访问

  • ['*']:允许任何地址访问

  • ['yourdomain.com', 'www.yourdomain.com']:仅允许指定的主机名访问项目。强烈推荐在生产环境中明确设置允许的主机

    ALLOWED_HOSTS = ['*']
    

注解:[::1]:这是 IPv6 中的环回地址,功能和 127.0.0.1 一样,也是表示“本机”,通过 http://[::1]:8000 来访问。

4. App配置

INSTALLED_APPS中可以查看和管理项目应用(App):

  • 可以添加自定义App,使用命令python manage.py startapp myapp

  • 注意:使用命令 python manage.py startapp myapp 后,Django 不会自动将新创建的 App 名称添加到 INSTALLED_APPS 列表中。你需要手动将新 App 的名称添加到 settings.py 文件中的 INSTALLED_APPS 列表中,像这样:

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth',...'myapp',  # 添加自定义的 App 名称
]

5. 中间件配置

MIDDLEWARE中配置项目所注册的中间件。

MIDDLEWARE = ["django.middleware.security.SecurityMiddleware","django.contrib.sessions.middleware.SessionMiddleware","django.middleware.common.CommonMiddleware","django.middleware.csrf.CsrfViewMiddleware","django.contrib.auth.middleware.AuthenticationMiddleware","django.contrib.messages.middleware.MessageMiddleware","django.middleware.clickjacking.XFrameOptionsMiddleware",
]

6. 模板配置

  • TEMPLATES配置项定义项目模板的信息,
    • BACKEND 指定使用的模板引擎
    • DIRS指定模板存放路径
    • APP_DIRSTrue时会在各个App中查找模板
    • OPTIONS用于配置模板引擎的其他选项
      • context_processors 列表定义了在每个模板渲染时自动添加到上下文中的处理器
TEMPLATES = [{ "BACKEND": "django.template.backends.django.DjangoTemplates", # 这里使用 Django 内置的模板引擎"DIRS": [],"APP_DIRS": True,"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",# 启用消息框架相关的上下文变量],},},
]

DIRS 和 APP_DIRS 模板文件查找规则说明

  • “DIRS”: [],“APP_DIRS”: True 时,仅查找各个APP中的模板;
  • “DIRS”: [BASE_DIR / ‘自定义模板名’],“APP_DIRS”: True,时,先查找 DIRS中的”自定义模板名“路径下的模板,如果找不到,再查找各个APP中的模板;
  • “DIRS”: [BASE_DIR / ‘自定义模板名’],“APP_DIRS”: False 时,仅查找 DIRS中的”自定义模板名“路径下的模板;
  • “DIRS”:[],“APP_DIRS”:False 时,Django 将无法找到任何模板文件,将完全依赖自定义的模板引擎BACKEND

7. 数据库配置

DATABASES字段中定义数据库配置,默认使用SQLite。可支持多种数据库,如MySQL、PostgreSQL等。

DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3","NAME": BASE_DIR / "db.sqlite3",}
}
  • 对于MySQL数据库,需安装依赖包:pip install pymysql配置如下:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',  # 使用的数据库引擎,这里是 MySQL'NAME': 'mydatabase',                  # 数据库名称'USER': 'root',                        # 数据库用户名'PASSWORD': 'password',                # 数据库用户密码'HOST': '127.0.0.1',                   # 数据库服务器的地址(通常是 IP 地址或主机名)'PORT': '3306',                        # 数据库服务器的端口号,MySQL 的默认端口是 3306}
}
  • 其他数据库引擎:

PostgreSQL:需安装依赖包:pip install psycopg2

'ENGINE': 'django.db.backends.postgresql'

Oracle:需安装依赖包:pip install cx_Oracle

'ENGINE': 'django.db.backends.oracle' # Oracle

8. 路由配置

ROOT_URLCONF指定项目的根级路由信息。

ROOT_URLCONF = 'myproject.urls'

myproject 是 Django 项目的名称,urls 是定义在 myproject 目录下的 urls.py 文件。

9. 语言与时区配置

LANGUAGE_CODE设置项目的语言,TIME_ZONE设置时区。

LANGUAGE_CODE = 'zh-hans'  # 项目默认语言设置为简体中文 ('zh-hans' 表示简体中文)
# LANGUAGE_CODE = "en-us"  # 项目默认语言设置为英文 ('en-us' 表示美式英语)TIME_ZONE = 'Asia/Shanghai'  # 设置项目使用的时区为中国上海时间 (东八区)
# TIME_ZONE = "UTC"  # 设置项目使用的时区为世界标准时间 (UTC)

10. 静态文件配置

STATIC_URL 这个配置项用于指定静态文件的 URL 前缀。

STATIC_URL = '/static/'

在这个目录下,可以存放各种静态资源文件,这些文件通常不会随着请求的变化而改变。常见的静态文件类型包括如下:

(1)CSS 文件

  • 用于存放样式表文件,可以定义页面的布局、样式和外观。
  • 例如:styles.cssmain.css

(2)JavaScript 文件

  • 用于存放客户端脚本文件,可以增加页面的动态效果和交互性。
  • 例如:script.jsapp.js

(3)图像文件

  • 可以存放各种格式的图片文件,如 .png.jpg.jpeg.gif.svg 等。
  • 例如:logo.pngbanner.jpg

(4)字体文件

  • 用于存放网页上使用的字体文件,如 .ttf.otf.woff.woff2 等。
  • 例如:custom-font.woff

(5)图标文件

  • 用于存放小图标,如 .ico.png 格式的图标文件。
  • 例如:favicon.ico

(6)媒体文件

  • 虽然通常推荐将用户上传的媒体文件放在 MEDIA_URL 指定的目录下,但一些固定的视频、音频、PDF 等也可以放在静态资源目录 static 中。
  • 例如:promo.mp4guide.pdf

(7)其他静态资源

  • 其他不会改变的资源文件,如 .json 配置文件等,也可以放在静态资源目录 static 中。

⭐注意:HTML可以放吗?什么样的HTML文件可以放?

  • HTML 文件通常需要在 Django 中作为模板进行渲染,这样才可以动态插入数据,因此推荐放在 模板目录(templates/) 中。
  • 纯静态HTML文件可以放到静态资源目录static 下,但需要通过 /static/ URL 前缀访问。例如:访问 static/html/help.html 页面可以通过 http://example.com/static/html/help.html 访问。
  • 最终建议:静态资源目录不要放HTML文件,画蛇添足

11. 总结

本节介绍了Django框架常用的配置信息。这些设置为后续的Web项目开发奠定基础,建议在实际项目中根据需求参考官方文档进行深入学习。

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

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

相关文章

ZeroNL2SQL:零样本 NL2SQL

发布于:2024 年 10 月 30 日 星期三 #RAG #NL2SQL # Zero-Shot 自然语言到 SQL(NL2SQL)的转换是一个重要的研究领域,它允许非技术用户轻松访问和分析数据,在商业智能、数据分析等领域具有广泛的应用前景。然而&#x…

nginx配置https及url重写

nginx配置https及url重写 一、https简介1、安全访问2、数据的安全性3、数据的完整性3、身份的真实性 二、配置https网站1、环境规划2、部署私有CA3、部署https的虚拟主机 三、URL重写1、语法 四、location的写法1、语法2、location uri {}3、location ~ uri { }4、location ~*…

【安全解决方案】深入解析:如何通过CDN获取用户真实IP地址

一、业务场景 某大型互联网以及电商公司为了防止客户端获取到真实的ip地址,以及达到保护后端业务服务器不被网站攻击,同时又可以让公安要求留存网站日志和排查违法行为,以及打击犯罪的时候,获取不到真实的ip地址,发现…

4. 日志系统实现

log.h 文件定义了一个单例模式的日志类 Log,用于记录系统日志。 单例设计模式: 主要功能 根据上述分析,这个日志类 Log 主要实现了以下功能: 1. 日志写入 该日志类提供了 write_log() 方法用于将日志内容写入文件。日志内容可以…

【SQL】SQL函数

📢 前言 函数 是指一段可以直接被另一段程序调用的程序或代码。主要包括了以下4中类型的函数。 字符串函数数值函数日期函数流程函数 🎄 字符串函数 ⭐ 常用函数 函数 功能 CONCAT(S1,S2,...Sn) 字符串拼接,将S1,S2&#xff0…

论文翻译 | PROMPTAGATOR : FEW-SHOT DENSE RETRIEVAL FROM 8 EXAMPLES

摘要 最近的信息检索研究主要集中在如何从一个任务(通常有丰富的监督数据)转移到其他各种监督有限的任务上,其隐含的假设是从一个任务可以泛化到所有其他任务。然而,这忽略了这样一个事实,即存在许多多样化和独特的检索…

【MySQL】深入理解隔离性

目录 一、数据库并发的场景 1. 读-读并发 2. 读-写并发 3. 写-写并发 二、多版本并发控制( MVCC ) 2.1.MVCC的核心思想 2.2.MVCC的优势 2.3.MVCC的工作原理 2.4.MVCC的应用场景 三、理解MVCC 3.1. 3个记录隐藏字段 3.2.undo日志 4.快照的概…

目录遍历漏洞

目录遍历 目录 概念漏洞分析 加密型传递参数编码绕过目录限定绕过绕过文件后缀过滤(截断上传原理) 漏洞挖掘 访问图片文件测试时去掉文件名只访问目录路径搜索引擎谷歌关键字 pikachu目录遍历 目录遍历与任意文件下载其实差不多,但是如果目录遍历比如etc/passwd只能看不能下…

GitLab在Linux上的详细部署教程并实现远程代码管理与协作

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 本文主要介绍如何在Linux CentOS8 中搭建GitLab私有仓库并且结合内网穿透工具实现在公网…

LC:贪心题解

文章目录 376. 摆动序列 376. 摆动序列 题目链接:https://leetcode.cn/problems/wiggle-subsequence/description/ 这个题目自己首先想到的是动态规划解题,贪心解法真的非常妙,参考下面题解:https://leetcode.cn/problems/wiggle…

Javaee:阻塞队列和生产者消费者模型

文章目录 什么是阻塞队列java中的主要阻塞队列生产者消费者模型阻塞队列发挥的作用解耦合削峰填谷 模拟实现阻塞队列put方法take方法生产者消费者模型 什么是阻塞队列 阻塞队列是一种支持阻塞操作的队列,在多线程中实现通线程之间的通信协调的特殊队列 java中的主…

Redis特性和应用场景以及安装

目录 Redis特性 1.数据在内存中存储 2.可编程性 3.可拓展性 4.集群 5.高可用 6.持久化 7.主从复制 8.速度快 Redis的应用场景 1.用作数据库 2.用作缓存或保存会话 3.用作消息队列 Redis 不可以做什么 Redis的安装 Redis特性 Redis 之所以受到如此多公司的⻘睐…

如何在VMware中安全地恢复已删除的快照?

在VMware中是否可以恢复已删除的快照? 答案是肯定的,您有几种方法可以尝试恢复被删除的快照文件: 仅删除了快照描述符文件(如VMname-000000#.vmdk):这种情况下,可以手动重新创建描述符文件&…

强化学习DQN实践(gymnasium+pytorch)

Pytorch官方教程中有强化学习教程,但是很多中文翻译都太老了,里面的代码也不能跑了 这篇blog按照官方最新教程实现,并加入了一些个人理解 工具 gymnasium:由gym升级而来,官方定义:An API standard for rei…

ubuntu22.04安装向日葵

1、下载deb安装包 进入官网下载图形版本:https://sunlogin.oray.com/download/linux?typepersonal 2、命令行安装 sudo chmod x 文件名.deb sudo dpkg -i 文件名.deb 3、开始报错的看这里! 首先展示一下安装成功的效果图: 接下来是我安…

Vuestic 数据表格 使用demo

<template><br><div class"grid sm:grid-cols-3 gap-6 mb-6"><VaButton click"()>{for(const it in this.selectedItems){console.log(this.selectedItems);}}">参数设置</VaButton><VaButton>参数刷新</VaButt…

深入了解 美国高防 CN2 :如何提升全球化业务的网络安全与性能

美国高防 CN2 的重要性 在跨国企业和全球化业务的不断扩展下&#xff0c;对高性能和安全的网络连接需求不断增加。美国高防 CN2&#xff08;Global Internet Access&#xff09;以其卓越的跨境传输效率和强大的防护能力&#xff0c;成为许多企业关注的焦点。尤其是对电商、游戏…

NVR批量管理软件/平台EasyNVR多个NVR同时管理支持视频投放在电视墙上

在当今智能化、数字化的时代&#xff0c;视频监控已经成为各行各业不可或缺的一部分&#xff0c;无论是公共安全、交通管理、企业监控还是智慧城市建设&#xff0c;都离不开高效、稳定的视频监控系统的支持。而在这些应用场景中&#xff0c;将监控视频实时投放到大屏幕电视墙上…

新材料产业数据管理:KPaaS平台的创新驱动

近日&#xff0c;工业和信息化部、财政部、国家数据局联合印发《新材料大数据中心总体建设方案》&#xff08;以下简称《建设方案》&#xff09;&#xff0c;为新材料产业的发展注入了强大动力。该方案规划清晰&#xff0c;目标明确&#xff0c;旨在充分发挥大数据、人工智能对…

AI代币是什么?AI与Web3结合的未来方向在哪里?

近两年随着人工智能的崛起&#xff0c;AI已经渗透到制造业、电商、广告、医药等各个行业&#xff0c;加密货币领域也不例外&#xff0c;人工智能与区块链的融合&#xff0c;让我们看到了独特的数字资产 — AI加密代币。 它的流行始于2022年底&#xff0c;随着OpenAI智能聊天机…