【django】2-1 (django配置) 应用配置、中间件配置、模板配置

news2025/3/30 7:14:24

文章目录

  • 1 基本设置
  • 2 应用配置
    • 2.1 django核心应用
    • 2.2 常用第三方应用
  • 3 中间件
    • 3.1 默认使用的中间件
    • 3.2 其它内置中间件
    • 3.3 第三方中间件
    • 3.4 中间件的执行顺序
  • 4 模板引擎配置
    • 4.1 配置字典的键
    • 4.2 上下文处理器


创建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配置


1 基本设置

  • BASE_DIR 项目所在的目录

    BASE_DIR = Path(__file__).resolve().parent.parent
    
  • SECRET_KEY 用于提供加密签名的密钥,需要保密。
    django项目在创建时会自动创建一个随机生成的密钥。
    它会被用于会话、消息、密码的加密。

  • DEBUG 调试模式开关
    调试模式下会显示详细的错误页面。
    生产环境下需要关闭调试模式。

  • ALLOWED_HOSTS 允许访问的主机名列表
    在生产环境中需要指定,用来防止HTTP攻击。

    # 默认值
    ALLOWED_HOSTS = []
    
    # 示例
    ALLOWED_HOSTS = ['www.example.com']
    
  • ROOT_URLCONF 项目的主URL配置文件路径


2 应用配置

INSTALLED_APPS中包括django安装中所有被启用的自带应用和自定义应用。
其中的每一个字符串都是点分隔路径的格式,表示应用程序配置类或包含应用程序的包。
多个应用程序提供同一个资源的不同版本时,排在前面的应用程序先被使用。

2.1 django核心应用

INSTALLED_APPS的初始值包含6个应用:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

这6项是django的核心应用,它们的作用如下:

  • django.contrib.admin,提供django管理后台,可以在Web页面管理数据库。
  • django.contrib.auth,用户认证系统,包括用户、组、权限管理和登录、注销、密码重置登功能。
  • django.contrib.contenttypes,提供内容类型框架。
  • django.contrib.sessions,会话管理,支持跨请求的用户会话存储,用于存储用户状态。
  • django.contrib.messages,提供消息框架,用于在请求之间传递一次性消息。
  • django.contrib.staticfiles,在开发和生产环境中收集和提供静态文件。

django还提供了其他的可选应用:

  • django.contrib.sites,多站点管理,允许一个django项目管理多个站点。
  • django.contrib.flatpages,创建和管理不需要复杂逻辑的静态页面。
  • django.contrib.redirects,管理URL重定向规则。
  • django.contrib.humanize,用于将数据转为更易读的形式。
  • django.contrib.postgres,提供PostgreSQL数据库的功能支持,如全文搜索、数组字段、JSON字段等。

2.2 常用第三方应用

为了扩展django功能,常用的第三方应用如下:

  • rest_framework,快速构建RESTful API。
  • corsheaders,CORS中间件,处理跨域资源共享问题。
  • allauth,完整的用户认证和社交登录功能。
  • django_filters,过滤查询集。
  • debug_toolbar,在开发环境中提供调试信息。

3 中间件

MIDDLEWARE中是处理请求和响应的中间件列表。

中间件可以在请求到达视图之前或响应返回客户端之前执行一些操作。

3.1 默认使用的中间件

  • django.middleware.security.SecurityMiddleware
    提供安全相关的功能。设置HTTP安全头,支持HTTPS重定向等。

  • django.contrib.sessions.middleware.SessionMiddleware
    为每个请求启用会话支持,把会话数据存储在数据库、缓存或文件中。

  • django.middleware.common.CommonMiddleware
    提供一些通用的功能。如URL规范化、禁止访问DISALLOWED_USER_AGENTS中的用户代理、支持APPEND_SLASH配置。

  • django.middleware.csrf.CsrfViewMiddleware
    为POST请求验证CSRF Token,防止伪造的用户请求。

    CSRF,跨站请求伪造。

  • django.contrib.auth.middleware.AuthenticationMiddleware
    将认证用户附加到请求对象上:request.user。支持用户登录、注销和权限检查。

  • django.contrib.messages.middleware.MessageMiddleware
    在请求之间传递一次性消息,如成功提示、错误提示。消息可以存在会话、Cookie或其他后端中。

  • django.middleware.clickjacking.XFrameOptionsMiddleware
    防止点击劫持攻击。设置X-Frame-Options头,限制页面是否可以在<frame><iframe>、或<object>标签中加载。

3.2 其它内置中间件

  • django.middleware.locale.LocaleMiddleware
    国际化支持。根据用户的语言偏好设置语言,支持通过URL、会话或浏览器设置语言。
  • django.middleware.gzip.GZipMiddleware
    允许使用gzip压缩响应内容,减少传输数据量。
  • django.middleware.cache.FetchFromCacheMiddleware
    缓存支持,在响应阶段缓存页面。
  • django.middleware.cache.UpdateCacheMiddleware
    缓存支持,在请求阶段从缓存中获取页面。

3.3 第三方中间件

  • corsheaders.middleware.CorsMiddleware
    允许浏览器跨域访问资源。
  • debug_toolbar.middleware.DebugToolbarMiddleware
    在开发环境中显示调试信息。
  • whitenoise.middleware.WhiteNoiseMiddleware
    静态文件管理。

3.4 中间件的执行顺序

中间件的执行顺序和它在MIDDLEWARE列表中的顺序有关。

  • 请求阶段
    在请求阶段,django会按MIDDLEWARE列表从上到下依次调用每个中间件的process_request方法。
    如果某个中间件的process_request返回None,请求会继续传给下一个中间件。
    如果某个中间件的process_request返回JttpResponse对象,就跳过后续中间件,进入响应阶段。

  • 异常处理阶段
    如果在请求处理过程中发生异常,django会按MIDDLEWARE列表从下到上依次调用每个中间件的process_exception方法。
    如果某个中间件的process_exception方法返回HttpResponse对象,就跳过后续中间件,直接进入响应阶段。

  • 视图处理阶段
    在请求阶段,如果所有中间件的process_request方法都返回None,请求会交给视图进行处理。
    视图函数或视图类处理完成后,进入响应阶段。

  • 响应阶段
    在响应阶段,django会按MIDDLEWARE列表从下到上依次调用每个中间件的process_response方法。
    每个中间件的process_response都会接收请求和响应对象,并可以修改响应的内容。


4 模板引擎配置

TEMPLATES用于配置django项目中的模板引擎。
TEMPLATES是一个列表,每个元素是一个字典,表示一个模板引擎的配置。
django支持多个模板引擎,但通常只需要配置一个。

默认的模板引擎:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        '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',
            ],
        },
    },
]

4.1 配置字典的键

  • BACKEND 指定模板引擎的后端类
    默认是django自带的模板引擎。
    安装jinja2后可以使用Jinja2模板引擎:'django.template.backends.jinja2.Jinja2'

  • DIRS 模板文件所在目录的绝对路径列表

    'DIRS': [BASE_DIR / 'templates'],
    
  • APP_DIRS 布尔值,是否在已安装应用的templates目录下查找模板

  • OPTIONS 模板引擎的额外配置项
    值为一个字典,包含以下配置项:

    • context_processors,上下文处理器列表,用于向模板传递全局变量;
    • libraries,注册自定义模板标签的过滤器;
    • builtins,注册内置模板标签和过滤器;
    • autoescape,是否自动转义HTML内容,默认True;
    • debug,是否启用模板调试模式,默认等于DEBUG设置的值;

4.2 上下文处理器

django自带的上下文处理器:

  • django.template.context_processors.debug
    在调试模式下,向模板传递debugsql_queries的值。
  • django.template.context_processors.request
    向模板传递request对象。
  • django.contrib.auth.context_processors.auth
    向模板传递userperms变量。
  • django.contrib.messages.context_processors.messages
    向模板传递messages变量。
<p>{{ debug }}</p>          <!-- 是否为调试模式 -->
<p>{{ request.user }}</p>   <!-- 获取当前用户 -->
<p>{{ user }}</p>           <!-- 获取当前用户 -->
<p>{{ perms }}</p>          <!-- 检查用户权限 -->
<p>{{ messages }}</p>       <!-- 显示一次性消息 -->

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

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

相关文章

罗杰斯特回归

定义 逻辑回归其实就是原来的线性回归加了激活函数&#xff0c;这个函数其实就是sigmoid函数&#xff0c;把一个回归的连续数值压缩到了0到1的空间&#xff0c;其实只要有函数能够满足把数值压缩到0,1之间就可以&#xff08;因为0到1之间的数值就是概率值&#xff09; 对于分类…

【嵌入式学习2】C语言 - VScode环境搭建

目录 ## 语言分类 ## c语言编译器 ## VScode相关配置 ## 语言分类 编译型语言&#xff1a;C&#xff0c;C解释型语言&#xff1a;python&#xff0c;JS ## c语言编译器 分类GCC 系列MinGWCygwinMSVC系列一套编程语言编译器将GCC编译器和GNU Binutils移植到Win32平台下的产物…

利用脚本和Shader制作屏幕后处理效果

一、屏幕后处理的实现原理 该屏幕后处理的原理是将渲染完成后的屏幕纹理通过脚本和Shader完成一些操作&#xff0c;然后实现各种屏幕效果 而实现屏幕后处理效果的主要操作就是获得当下渲染完成后的屏幕图像&#xff0c;其中unity提供了一个函数用于获取此图像——OnRenderIma…

【银河麒麟系统常识】命令:uname -m(查看系统架构)

命令&#xff1a; uname -m 功能 常用的 Linux/Unix 终端命令&#xff0c;用于显示当前系统的硬件架构&#xff1b; 返回 返回系统的CPU架构类型&#xff0c;用于判断软件兼容性&#xff1b; 输出结果架构说明常见设备x86_64Intel/AMD 64位 CPU主流 PC、服务器aarch64ARM 64位 …

3.1.2 内存池

文章目录 3.1.2 内存池1. 什么是内存池2. 内存管理1. 定长2. 不定长3. jemalloc4. tcmalloc 3.1.2 内存池 1. 什么是内存池 内存池&#xff08;Memory Pool&#xff09; 是一种 预先分配 一块大内存&#xff0c;然后按需分配和回收 其中小块内存的技术。它的本质是管理一块连续…

基于SpringBoot + Vue 的餐厅点餐管理系统

SpringBootVue餐厅点餐管理系统 技术框架 后端&#xff1a;springboot mybatisPlus前端&#xff1a;Vue2 elementUI数据库&#xff1a;mysql项目构建工具&#xff1a;maven 数据库表 14张 角色及功能 管理员&#xff1a;登录、用户管理、餐桌信息管理、菜品类型管理、菜…

【博客节选】再谈Unity 的 root motion

节选自 【Unity实战笔记】第二十三 root motion变更方向攻击 &#xff08;OnStateMove rootmotion rigidbody 使用的一些问题&#xff09; 小伙伴们应该对root motion非常困惑&#xff0c;包括那个bake into pose。 当xz bake into pose后&#xff0c;角色攻击动画与父节点产…

26考研——栈、队列和数组_栈(3)

408答疑 文章目录 一、栈1、栈&#xff08;Stack&#xff09;的概念和特点定义术语操作特性示例直观理解栈的基本操作初始化栈判断栈是否为空入栈操作出栈操作读取栈顶元素销毁栈 栈的数学性质 2、栈的顺序存储结构顺序栈的定义栈顶指针初始化注意事项 共享栈共享栈的操作共享栈…

基于 mxgraph 实现流程图

mxgraph 可以实现复杂的流程图绘制。mxGraph里的Graph指的是图论(Graph Theory)里的图而不是柱状图、饼图和甘特图等图(chart)&#xff0c;因此想找这些图的读者可以结束阅读了。 作为图论的图&#xff0c;它包含点和边&#xff0c;如下图所示。 交通图 横道图 架构图 mxGrap…

动态路由机制MoE专家库架构在多医疗AI专家协同会诊中的应用探析

随着医疗人工智能技术的飞速进步,AI在医学领域的应用日益增多,尤其是在复杂疾病的诊断和治疗中,AI技术的应用带来了巨大的潜力。特别是动态路由机制混合专家(Mixture of Experts,MoE)架构,因其灵活、高效的特点,正逐渐成为实现多AI专家协同会诊的关键技术。通过将多个不…

双工通信:WebSocket服务

&#xff08;一&#xff09;WebSocket概述 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输 注意;Websocket也只能由客户端先握…

洪水灌溉算法 + 总结

文章目录 floodfill算法图像渲染题解代码 岛屿数量题解代码 岛屿的最大面积题解代码 被围绕的区域题解代码 太平洋大西洋水流问题题解代码 扫雷游戏题解代码 衣橱整理题解代码 总结 floodfill算法 1. 寻找相同性质的联通块&#xff0c;可以使用dfs或者bfs解决&#xff0c;比如…

LangChain4j(1):初识LangChain4j

1 什么是LangChain和LangChain4j LangChain是一个大模型的开发框架&#xff0c;使用LangChain框架&#xff0c;程序员可以更好的利用大模型的能力&#xff0c;大大提高编程效率。如果你是一个lava程序员&#xff0c;那么对LangChain最简单直观的理解就是&#xff0c;LangChain…

Photoshop 2025安装包下载及Photoshop 2025详细图文安装教程

文章目录 前言一、Photoshop 2025安装包下载二、Photoshop 2025安装教程1.解压安装包2.运行程序3.修改安装路径4.设安装目录5.开始安装6.等安装完成7.关闭安装向导8.启动软件9.安装完成 前言 无论你是专业设计师&#xff0c;还是初涉图像处理的小白&#xff0c;Photoshop 2025…

SQL Server安装程序无法启动:系统兼容性检查失败

问题现象&#xff1a; 运行 SQL Server 2022 安装程序时&#xff0c;提示 “硬件或软件不满足最低要求”&#xff0c;安装向导直接退出或无法继续。 快速诊断 操作系统版本检查&#xff1a; # 查看 Windows 版本&#xff08;需 20H2 或更高&#xff09; winver 支持的系统&…

期权合约作废的话,权利金和保证金会退还么?

在期权交易中&#xff0c;权利金是否可以退回&#xff0c;主要取决于期权的交易情况和合约条款。 期权作废的三种情形 一般来说期权作废一共有三种情况&#xff0c;分别是到期没有行权、主动放弃或者是标的退市了。 第一种是到期未行权&#xff0c;一般来说值得都是虚值期权&…

MIPI计算ECC和CRC工具介绍

一、MIPI简介 MIPI联盟&#xff0c;即移动产业处理器接口&#xff08;Mobile Industry Processor Interface 简称MIPI&#xff09;联盟。MIPI&#xff08;移动产业处理器接口&#xff09;是MIPI联盟发起的为移动应用处理器制定的开放标准和一个规范。MIPI官网https://mipi.org/…

医院管理系统(源码)分享

「医院管理系统&#xff08;源码&#xff09; 源码&#xff1a; https://pan.quark.cn/s/b6e21488fce3 第1章 绪论 1.1 项目背景 随着计算机科学的迅猛发展和互联网技术的不断推进&#xff0c;人们的生活方式发生了巨大的变化&#xff0c;同时也推动了整个软件产业的发展。把…

使用Geotools从DEM数据中读取指定位置的高程实战

目录 前言 一、GridCoverage2D对象介绍 1、GridCoverage2D的属性 2、GridCoverage2D核心方法 3、GridCoverage2D中的高级操作 二、指定位置的高程获取 1、存储原理 2、相关属性的获取 3、获取高程的方法 三、总结 前言 在地理信息科学领域&#xff0c;高程数据是至关重…

STM32F103_LL库+寄存器学习笔记05 - GPIO输入模式,捕获上升沿进入中断回调

导言 GPIO设置输入模式后&#xff0c;一般会用轮询的方式去查看GPIO的电平状态。比如&#xff0c;最常用的案例是用于检测按钮的当前状态&#xff08;是按下还是没按下&#xff09;。中断的使用一般用于计算脉冲的频率与计算脉冲的数量。 项目地址&#xff1a;https://github.…