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。

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

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

相关文章

CentOS 7 Tomcat服务的安装

前提 安装ava https://blog.csdn.net/qq_36940806/article/details/134945175?spm1001.2014.3001.5501 1. 下载 wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.84/bin/apache-tomcat-9.0.84.tar.gzps: 可选择自己需要的版本下载安装https://mirr…

【单调栈】LeetCode2334:元素值大于变化阈值的子数组

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调栈 题目 给你一个整数数组 nums 和一个整数 threshold 。 找到长度为 k 的 nums 子数组,满足数组中 每个 元素都 大于 threshold / k 。 请你返回满足要求的 任意 子数组的 大小 。如果没有这…

STM32CubeMX驱动ST7789

环境 1、单片机:STM32F103C8T6 2、开发平台:STM32CUBEMXkeil mdk 3、屏幕:ST7789,分辨率240*240 STM32配置 1、使用硬件SPI1驱动屏幕。配置如下: 2、屏幕控制引脚配置: 注意:只配置了DC,RST,CS这3个控…

使用 Taro 开发鸿蒙原生应用 —— 探秘适配鸿蒙 ArkTS 的工作原理

背景 在上一篇文章中,我们已经了解到华为即将发布的鸿蒙操作系统纯血版本——鸿蒙 Next,以及各个互联网厂商开展鸿蒙应用开发的消息。其中,Taro作为一个重要的前端开发框架,也积极适配鸿蒙的新一代语言框架 —— ArkTS。 本文将…

Hive执行计划

Hive提供了explain命令来展示一个查询的执行计划,这个执行计划对于我们了解底层原理,Hive 调优,排查数据倾斜等很有帮助。 使用语法如下: explain query;在 hive cli 中输入以下命令(hive 2.3.7): explain select s…

前后端实现解析用户请求ip地址

前言 在我的软件系统中,如果希望安全系数高一些的话,往往会有用户登陆行为表来记录用户登陆行为,保障用户账号安全,比如记录登陆地址,每次登陆时候读取数据最近几次登陆地点,进行账号安全验证 假如以下是我的用户登陆行为表 实现获取用户登陆地址的方法有很多种,比如通过前端整…

使用pytest+selenium+allure实现web页面自动化测试

测试文件 base 基本方法data 测试数据page web页面相关操作image 测试截图log 日志文件report 测试报告文件temp 临时文件tool 文件读取,发邮件文件TestCases 测试用例 在page下的__init__.py文件下配置 import os import time from selenium.webdriver.common.by…

伪协议和反序列化 [ZJCTF 2019]NiZhuanSiWei

打开题目 代码审计 第一层绕过 if(isset($text)&&(file_get_contents($text,r)"welcome to the zjctf")){ echo "<br><h1>".file_get_contents($text,r)."</h1></br>"; 要求我们get传参的text内容必须为w…

案例109:基于微信小程序的高校寻物平台

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

[XR806开发板试用] XR806——基于FreeRTOS下部署竞技机器人先进模糊控制器

前言 很荣幸参与到由“极术社区和全志在线联合组织”举办的XR806开发板试用活动。本人热衷于各种的开发板的开发&#xff0c;同时更愿意将其实现到具体项目中。秉承以上原则&#xff0c;发现大家的重心都放在开发中的环境构建过程&#xff0c;缺少了不少实际应用场景的运用&am…

数据仓库-数据治理小厂实践

一、简介 数据治理贯穿数仓中数据的整个生命周期&#xff0c;从数据的产生、加载、清洗、计算&#xff0c;再到数据展示、应用&#xff0c;每个阶段都需要对数据进行治理&#xff0c;像有些比较大的企业都是有自己的数据治理平台或者会开发一些便捷的平台&#xff0c;对于没有平…

鸿蒙-HarmonyOS之初见

鸿蒙初识&#xff0c;此事能成&#xff01;&#xff01; 自己安装工具、配置环境并运行成功&#xff0c;流程记录。 一、首先官网下载开发工具 官网地址&#xff1a;https://developer.huawei.com/consumer/cn/ 当前最新的版本3.1 &#xff0c;windows和Mac&#xff0c;Mac又…

js中的Array.from()和Array.of()方法的用法详情

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;JavaScript小贴士 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续…

VScode安装C/C++编译器步骤

一、安装C/C插件 二、安装 MinGW-w64 工具链 使用国内源 git clone https://gitee.com/cuihongxi/ubuntu2-mac.git 下载后进入到VScode文件夹下&#xff0c;点击msys2-x86_64-20231026.exe进行安装 完成后&#xff0c;确保选中“立即运行 MSYS2”框&#xff0c;然后选择“完…

stable diffusion工作原理

目录 序言stable diffusion能做什么扩散模型正向扩散逆向扩散 如何训练逆向扩散 Stable Diffusion模型潜在扩散模型变分自动编码器图像分辨率图像放大为什么潜在空间可能存在&#xff1f;在潜在空间中的逆向扩散什么是 VAE 文件&#xff1f; 条件化(conditioning)文本条件化&am…

深信服技术认证“SCSA-S”划重点:命令执行漏洞

为帮助大家更加系统化地学习网络安全知识&#xff0c;以及更高效地通过深信服安全服务认证工程师考核&#xff0c;深信服特别推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 *点击图片放大展示 深信服…

Python算法例21 交错正负数

1. 问题描述 给出一个含有正整数和负整数的数组&#xff0c;将其重新排列成一个正负数交错的数组。 2. 问题示例 给出数组[-1&#xff0c;-2&#xff0c;-3&#xff0c;4&#xff0c;5&#xff0c;6]&#xff0c;重新排序之后&#xff0c;变成[-1&#xff0c;5&#xff0c;-…

docker 部署kafka

随笔记录 目录 1. 安装zookeeper 2. 安装Kafka 2.1 拉取kafka image 2.2 查询本地docker images 2.3 查看本地 容器&#xff08;docker container&#xff09; 2.3.1 查看本地已启动的 docker container 2.3.2 查看所有容器的列表&#xff0c;包括已停止的容器。 2.4 …

个人财务工具、密钥管理平台、在线会计软件、稍后阅读方案 | 开源专题 No.51

gethomepage/homepage Stars: 10.1k License: GPL-3.0 这个项目是一个现代化、完全静态的、快速且安全的应用程序仪表盘&#xff0c;具有超过 100 种服务和多语言翻译的集成。 快速&#xff1a;网站在构建时以静态方式生成&#xff0c;加载时间飞快。安全&#xff1a;所有对后…

五分钟学完DBSCAN算法

基础概念 邻1个核心思想&#xff1a;基于密度&#xff0c;依据密度的连通性分析增长聚类 2个算法参数&#xff1a;邻域半径R和最少点数目minpoints 这两个算法参数实际可以刻画什么叫密集——当邻域半径R内的点的个数大于最少点数目minpoints时&#xff0c;就是密集。 3种点的…