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

Python之Django项目的功能配置

1.创建Django项目

进入项目管理目录,比如:D盘
执行命令:diango-admin startproject demo1 创建项目
如果提示diango命令不存在,搜索diango-admin程序的位置,然后加入到环境变量path中。

进入项目,cd demo1
执行命令:python manage.py startapp pages 创建模块

关于项目的创建和django环境的搭建,可参考 Python之Django开发环境搭建及项目创建

2.项目功能配置

使用PyCharm打开项目demo1,然后打开pages文件夹的settings.py文件,如下图所示:
在这里插入图片描述
Django已为我们设置了一些默认的配置信息,比如项目路径、密钥配置、域名访问权限、App列表和中间件等。以项目demo1为例,settings.py的默认配置如下:
在这里插入图片描述
在这里插入图片描述
上述代码列出了13个配置信息,每个配置信息的说明如下:

(1)项目路径BASE_DIR:主要通过os模块读取当前项目在计算机系统的具体路径,该代码在创建项目时自动生成,一般情况下无须修改。
(2)密钥配置SECRET_KEY:这是一个随机值,在项目创建的时候自动生成,一般情况下无须修改。主要用于重要数据的加密处理,提高项目的安全性,避免遭到攻击者恶意破坏。密钥主要用于用户密码、CSRF机制和会话Session等数据加密。用户密码:Django内置一套Auth认证系统,该系统具有用户认证和存储用户信息等功能,在创建用户的时候,将用户密码通过密钥进行加密处理,保证用户的安全性。CSRF机制:该机制主要用于表单提交,防止窃取网站的用户信息来制造恶意请求。会话Session:Session的信息存放在Cookie中,以一串随机的字符串表示,用于标识当前访问网站的用户身份,记录相关用户信息。
(3)调试模式DEBUG:该值为布尔类型。如果在开发调试阶段,那么应设置为True,在开发调试过程中会自动检测代码是否发生更改,根据检测结果执行是否刷新重启系统。如果项目部署上线,那么应将其改为False,否则会泄漏项目的相关信息。
(4)域名访问权限ALLOWED_HOSTS:设置可访问的域名,默认值为空列表。当DEBUG为True并且ALLOWED_HOSTS为空列表时,项目只允许以localhost或127.0.0.1在浏览器上访问。当DEBUG为False时,ALLOWED_HOSTS为必填项,否则程序无法启动,如果想允许所有域名访问,可设置ALLOW_HOSTS = [‘*’]。
(5)App列表INSTALLED_APPS:告诉Django有哪些App。在项目创建时已有admin、auth和sessions等配置信息,这些都是Django内置的应用功能,各个功能说明如下:admin:内置的后台管理系统。auth:内置的用户认证系统。contenttypes:记录项目中所有model元数据(Django的ORM框架)。sessions:Session会话功能,用于标识当前访问网站的用户身份,记录相关用户信息。messages:消息提示功能。staticfiles:查找静态资源路径。
(6)中间件MIDDLEWARE:这是一个用来处理Django的请求(Request)和响应(Response)的框架级别的钩子,它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。(7)路由入口设置ROOT_URLCONF:告诉Django从哪个文件查找整个项目的路由信息(路由信息即我们定义的网址信息),默认值是与项目同名的文件夹的urls.py文件,即babys文件夹的urls.py。(8)模板配置TEMPLATES:主要配置模板的解析引擎、模板的存放路径地址以及Django内置功能的模板使用配置信息。
(9)WSGI配置WSGI_APPLICATION:告诉Django如何查找WSGI文件,并从WSGI文件启动并运行Django系统服务,默认值是与项目同名的文件夹的wsgi.py文件,即babys文件夹的wsgi.py。
(10)数据库配置DATABASES:配置数据的连接信息,如连接数据库的模块、数据库名称、数据库的账号密码等,默认连接sqlite数据库。
(11)内置Auth认证的功能配置AUTH_PASSWORD_VALIDATORS:主要实现Django的Auth认证系统的内置功能。
(12)国际化与本地化配置:包含配置属性LANGUAGE_CODE、TIME_ZONE、USE_I18N、USE_L10N、USE_TZ,主要实现网站的语言设置、不同时区的时间设置等。
(13)静态资源配置STATIC_URL:设置静态文件的路径信息。在网站开发阶段中,我们经常对配置文件settings.py的INSTALLED_APPS、MIDDLEWARE、TEMPLATES、DATABASES和STATIC_URL进行配置,从而完成网站的开发过程,而配置属性DEBUG和ALLOWED_HOSTS则用于网站上线阶段。上述配置属性是Django默认的功能配置,在实际开发中,可根据实际情况适当添加或删除相应的功能配置。

3.添加项目应用

我们在项目demo1添加了模块pages,但Django在运行过程中依然无法识别新增的项目模块,因此还需在Django的配置文件settings.py添加我们新增的项目模块。在App列表INSTALLED_APPS添加pages,添加信息如下:
在这里插入图片描述
在App列表INSTALLED_APPS添加项目模块(App)不用考虑添加顺序,一般情况下,新增的项目模块写在App列表INSTALLED_APPS末端,并且以字符串格式表示。

4.设置模板信息

在Web开发中,模板是一种较为特殊的HTML文档。这个HTML文档嵌入了一些能够让Django识别的变量和指令,然后由Django的模板引擎解析这些变量和指令,生成完整的HTML网页并返回给用户浏览。模板是Django里面的MTV框架模式的T部分,配置模板路径是为了告诉Django在解析模板时,如何找到模板所在的位置。一般情况下,项目的根目录文件夹templates通常存放共用的模板文件,能为各个项目模块的模板文件调用,这个模式符合代码重复使用的原则。我们已在项目demo1创建了文件夹templates,它是用来存放Django模板文件的,在配置文件settings.py的配置属性TEMPLATES添加文件夹templates,配置信息如下:
在这里插入图片描述
模板配置以列表格式表示,每个元素具有不同的含义,其含义说明如下:

BACKEND:定义模板引擎,用于识别模板里面的变量和指令。内置的模板引擎有Django Templates和jinja2.Jinja2,每个模板引擎都有自己的变量和指令语法。
DIRS:设置模板所在的路径,告诉Django在哪个地方查找模板的位置,默认为空列表。
APP_DIRS:是否在App里查找模板文件。
OPTIONS:用于填充在RequestContext的上下文(模板里面的变量和指令),一般情况下不做任何修改。模板文件夹也可以在项目模块(App)里面创建,比如在项目应用pages中创建模板文件夹temps,那么在TEMPLATES的配置属性DIRS添加os.path.join(BASE_DIR,‘pages/temp’),其中pages/temp代表项目模块pages的模板文件夹temps;并且配置属性APP_DIRS必须设置为True,否则Django无法从项目应用中查找模板文件。

5.添加中间件

中间件(Middleware)是一个用来处理Django请求(Request)和响应(Response)的框架级别的钩子,它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。当用户在网站中进行某个操作时,这个过程是用户向网站发送HTTP请求(Request),而网站会根据用户的操作返回相关的网页内容,这个过程称为响应处理(Response)。从请求到响应的过程中,当Django接收到用户的请求时,首先经过中间件处理请求信息,执行相关的处理,然后将处理结果返回给用户。中间件的执行流程如下图所示:
在这里插入图片描述
从上图中能清晰地看到,中间件的作用是处理用户请求信息和返回响应内容。开发者可以根据自己的开发需求自定义中间件,只要将自定义的中间件添加到配置属性MIDDLEWARE中即可激活。一般情况下,Django默认的中间件配置均可满足大部分的开发需求。在项目的MIDDLEWARE中添加LocaleMiddleware中间件,使得Django内置的功能支持中文显示,代码如下:
在这里插入图片描述
配置属性MIDDLEWARE的数据格式为列表类型,每个中间件的设置顺序是固定的,如果随意变更中间件很容易导致程序异常。每个中间件的说明如下:

SecurityMiddleware:内置的安全机制,保护用户与网站的通信安全。
SessionMiddleware:会话Session功能。
LocaleMiddleware:国际化和本地化功能。
CommonMiddleware:处理请求信息,规范化请求内容。
CsrfViewMiddleware:开启CSRF防护功能。
AuthenticationMiddleware:开启内置的用户认证系统。
MessageMiddleware:开启内置的信息提示功能。
XFrameOptionsMiddleware:防止恶意程序单击劫持。

6.配置数据库

默认情况下,Django支持使用PostgreSQL、MySQL、Sqlite3和Oracle数据库,如果要使用其他的数据库,如MSSQL或Redis等,需要自行安装第三方插件。配置属性DATABASES是设置项目所使用的数据库信息,不同的数据库需要设置不同的数据库引擎,数据库引擎用于实现项目与数据库的连接,Django提供了4种数据库引擎:

‘django.db.backends.postgresql’
‘django.db.backends.mysql’
‘django.db.backends.sqlite3’
‘django.db.backends.oracle’

在创建项目的时候,Django已默认使用Sqlite3数据库,配置文件settings.py的配置信息如下所示:
在这里插入图片描述
由于项目demo1需要使用MySQL数据库,因此在配置属性DATABASES中设置MySQL的连接信息。在配置数据库信息之前,首先确保本地计算机已安装MySQL数据库系统,然后再安装MySQL的连接模块,Django可以使用mysqlclient和pymysql模块实现MySQL连接。

mysqlclient模块可以使用pip指令安装,打开命令提示符窗口并输入安装指令pip install mysqlclient,然后等待模板安装完成即可。如果使用pip在线安装mysqlclient的过程中出现错误,还可以选择whl文件安装。在浏览器中访问www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient并下载与Python版本相匹配的mysqlclient文件。我们将mysqlclient文件下载保存在D盘,然后打开命令提示符窗口,使用pip完成whl文件的安装,如下所示:

pip install D:\mysqlclient-1.4.6-cp38-cp38-win_amd64.whl

完成mysqlclient模块的安装后,在项目的配置文件settings.py中配置MySQL数据库连接信息,代码如下:
在这里插入图片描述
为了验证数据库连接信息是否正确,我们使用数据库可视化工具HeidiSQL工具打开本地的MySQL数据库。在本地的MySQL数据库创建数据库db_pages,如下图所示:

HeidiSQL工具下载也放到CSDN上了,可免费下载,解压后就可以使用
HeidiSQL工具下载

刚创建的数据库babys是一个空白的数据库,接着在PyCharm的Terminal界面下输入Django操作指令python manage.py migrate来创建Django内置功能的数据表。因为Django自带了内置功能,如Admin后台系统、Auth用户系统和会话机制等功能,这些功能都需要借助数据表实现,所以该操作指令可以将内置的迁移文件生成数据表,如下图所示:
在这里插入图片描述
使用mysqlclient连接MySQL数据库时,Django对mysqlclient版本有要求,打开Django的源码查看mysqlclient的版本要求,修改版本号。

7.配置静态资源

静态资源的配置分别由配置属性STATIC_URL、STATICFILES_DIRS和STATIC_ROOT完成,默认情况下,Django只配置了配置属性STATIC_URL。一个项目在开发过程中肯定需要使用CSS和JavaScript文件,这些静态文件的存放路径主要在配置文件settings.py设置,Django默认的配置信息如下:
在这里插入图片描述
上述配置是设置静态资源的路由地址,其作用是使浏览器能成功访问Django的静态资源。默认情况下,Django只能识别项目模块(App)的static文件夹里面的静态资源。当项目启动时,Django会从项目模块(App)里面查找相关的资源文件,查找功能主要由App列表INSTALLED_APPS的staticfiles实现。

Django在调试模式(DEBUG=True)下只能识别项目模块(App)的static文件夹里面的静态资源,并且项目模块(App)的static文件夹在创建项目应用的时候不会自动生成,开发者还需要自行在项目模块(App)里面创建static文件夹,如果该文件夹改为其他名字,Django将无法识别;若将static文件夹放在demo1的项目目录下,则Django也是无法识别的。

由于STATIC_URL的特殊性,在开发中会造成诸多不便,比如将静态文件夹存放在项目的根目录或者定义多个静态文件夹等。以项目demo1为例,若想在网页上正常访问静态资源文件,可以将文件夹pstatic写入资源集合STATICFILES_DIRS,在配置文件settings.py添加并设置配置属性STATICFILES_DIRS,该属性以列表或元组的形式表示,设置方式如下:
在这里插入图片描述
如果项目中有多个静态资源文件夹,并且这些文件夹不是在项目模块(App)里面;或者项目模块(App)的静态文件夹名称不是static,那么我们只需在配置属性STATICFILES_DIRS添加对应的文件夹即可

当项目的配置属性DEBUG设为True的时候,Django会自动提供静态文件代理服务,此时整个项目处于开发阶段,因此无须使用STATIC_ROOT。当配置属性DEBUG设为False的时候,意味着项目进入生产环境,Django不再提供静态文件代理服务,此时需要在项目的配置文件中设置STATIC_ROOT。

相关文章:

Python之Django项目的功能配置

1.创建Django项目 进入项目管理目录,比如:D盘 执行命令:diango-admin startproject demo1 创建项目 如果提示diango命令不存在,搜索diango-admin程序的位置,然后加入到环境变量path中。 进入项目,cd demo…...

P4 音频知识点——PCM音频原始数据

目录 前言 01 PCM音频原始数据 1.1 频率 1.2 振幅: 1.3 比特率 1.4 采样 1.5 量化 1.6 编码 02. PCM数据有以下重要的参数: 采样率: 采集深度 通道数 ​​​​​​​ PCM比特率 ​​​​​​​ PCM文件大小计算: ​…...

解决Electron中WebView加载部分HTTPS页面白屏的方法

Electron是一个开源的桌面应用程序框架,它允许使用Web技术构建跨平台的桌面应用。在Electron应用中,WebView 是一个常用的组件,用于嵌套加载Web内容。然而,有时候在加载使用 HTTPS 协议的页面时,可能会因为证书问题导致…...

【Java中创建对象的方式有哪些?】

✅Java中创建对象的方式有哪些? ✅使用New关键字✅使用反射机制✅使用clone方法✅使用反序列化✅使用方法句柄✅ 使用Unsafe分配内存 ✅使用New关键字 这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的构造函数 (无参的和有…...

npm使用详解(好吧好吧是粗解)

目录 npm是什么? npm有什么用? npm安装 在 Windows 上 在 macOS 上 在 Linux 上(使用 apt 包管理器为例) 验证 npm 安装成功: npm使用 1. 初始化项目: 2. 安装和管理依赖: 3. 查看和…...

uniapp自定义头部导航怎么实现?

一、在pages.json文件里边写上自定义属性 "navigationStyle": "custom" 二、在对应的index页面写上以下&#xff1a; <view :style"{ height: headheight px, backgroundColor: #24B7FF, zIndex: 99, position: fixed, top: 0px, width: 100% …...

什么是 Dubbo?它有哪些核心功能?

文章目录 什么是 Dubbo&#xff1f;它有哪些核心功能&#xff1f; 什么是 Dubbo&#xff1f;它有哪些核心功能&#xff1f; Dubbo 是一款高性能、轻量级的开源 RPC 框架。由 10 层模式构成&#xff0c;整个分层依赖由上至下。 通过这张图我们也可以将 Dubbo 理解为三层模式&…...

(2021|CoRR,AugCLIP,优化)FuseDream:通过改进的 CLIP+GAN 空间优化实现免训练文本到图像生成

FuseDream: Training-Free Text-to-Image Generation with Improved CLIPGAN Space Optimization 公众&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. CLIPGAN 文本到图…...

python pip安装依赖的常用软件源

目录 引言 一、什么是镜像源&#xff1f;​​​​​​​ 二、清华源 三、阿里源 四、中科大源 五、豆瓣源 六、更多资源 引言 在软件开发和使用过程中&#xff0c;我们经常需要下载和更新各种软件包和库文件。然而&#xff0c;由于网络环境的限制或者服务器的负载&#…...

避免大M取值过大引起的数值问题

在数学建模当中&#xff0c;常常会见到大M法&#xff0c;它之所以叫大M法&#xff0c;是因为它涉及到一个&#xff08;绝对值&#xff09;较大的系数M&#xff0c;这个大M的值应大于约束中的连续变量或者约束表达式可能取到的任何合理值&#xff0c;M值取过大往往会造成优化问题…...

史密斯圆图的使用

史密斯圆图的使用 简介识别史密斯圆图等反射系数圆归一化阻抗圆导纳圆图史密斯圆图的使用单支匹配双支匹配简介 史密斯图Smith Chart是电气工程,无线电,射频工程,微波工程和通信等领域常用的一种图示工具,用于分析和设计传输线和阻抗匹配网络,它由美国工程师Phillip H.Sm…...

可重复读解决了哪些问题? 对 SQL 慢查询会考虑哪些优化 ?

文章目录 可重复读解决了哪些问题&#xff1f;对 SQL 慢查询会考虑哪些优化 &#xff1f; 可重复读解决了哪些问题&#xff1f; &#xff08;1&#xff09;可重复读的核心就是一致性读(consistent read);保证多次读取同一个数据时&#xff0c;其值都和事务开始时候的内容是一致…...

从0开始python学习-35.allure报告企业定制

目录 1. 搭建allure环境 2. 生成报告 3. logo定制 4. 企业级报告内容或层级定制 5. allure局域网查看 1. 搭建allure环境 1.1 JDK&#xff0c;使用PyCharm 找到pycharm安装目录找到java.exe记下jbr目录的完整路径&#xff0c;eg: C:\Program Files\JetBrains\PyCharm Com…...

蓝桥杯2020年10月青少组Python程序设计省赛真题

1、设计一个猜字母的程序,程序随机给出26个小写字母中的一个,答题者输入猜测的字母,若输入的不是26个小写字母之一,让用户重新输入,若字母在答案之前或之后,程序给出相应正确提示,如答错5次,则答题失败并退出游戏,若回答正确,程序输出回答次数并退出游戏。 2、试编一个“口…...

【数据结构】布隆过滤器原理详解及其代码实现

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐--…...

Qt中实现短信验证码功能

在Qt中实现短信验证码功能,可以使用Qt的信号槽机制和计时器来实现。 首先,在mainwindow.h头文件中添加下列代码: #include <QMainWindow> #include <QTimer>namespace Ui {class MainWindow; }class MainWindow : public...

Redis-运维

转自 极客时间 Redis 亚风 原文视频&#xff1a;https://u.geekbang.org/lesson/535?article681062 Redis 同步 Redis主从数据同步,主从第⼀次同步是全量同步 replicaof 主机 端口 #当前这个机器做Master的备份master如何判断slave是不是第⼀次来同步数据&#xff1a; Repl…...

Qt制作定时关机小程序

文章目录 完成效果图ui界面ui样图 main函数窗口文件头文件cpp文件 引言 一般定时关机采用命令行模式&#xff0c;还需要我们计算在多久后关机&#xff0c;我们可以做一个小程序来定时关机 完成效果图 ui界面 <?xml version"1.0" encoding"UTF-8"?>…...

LeetCode day30

LeetCode day30 害&#xff0c;昨天和今天在搞数据结构的报告&#xff0c;后面应该也会把哈夫曼的大作业写上来。 今天认识认识贪心算法。(&#xff61;&#xff65;∀&#xff65;)&#xff89; 2697. 字典序最小回文串 给你一个由 小写英文字母 组成的字符串 s &#xff0c;…...

数据分析基础之《numpy(5)—合并与分割》

了解即可&#xff0c;用panads 一、作用 实现数据的切分和合并&#xff0c;将数据进行切分合并处理 二、合并 1、numpy.hstack 水平拼接 # hstack 水平拼接 a np.array((1,2,3)) b np.array((2,3,4)) np.hstack((a, b))a np.array([[1], [2], [3]]) b np.array([[2], […...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...