当前位置: 首页 > 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。

相关文章:

  • 音视频的编码格式与封装格式
  • 图像识别SLIC、Haralick texture features(自备)
  • 3.1 C语言之控制流语句
  • 【四】记一次关于架构设计从0到1的讨论
  • prometheus二进制安装
  • 【Flink-Kafka-To-ClickHouse】使用 Flink 实现 Kafka 数据写入 ClickHouse
  • SSTI模板注入基础(Flask+Jinja2)
  • 前端验收测试驱动开发
  • 高并发情况下,数据库与缓存数据不一致问题
  • WorkPlus超级APP助力企业节省IT人力成本,实现快速移动化
  • ARM学习(24)Can的高阶认识和错误处理
  • WPScan安全建议和防护
  • ArrayList源码学习笔记(3)
  • Vue 的两种实现:VSCode 中配置 vue 模板快捷方式的过程
  • 合并两个有序链表算法(leetcode第21题)
  • [NodeJS] 关于Buffer
  • 【面试系列】之二:关于js原型
  • CSS 专业技巧
  • css的样式优先级
  • Java IO学习笔记一
  • java取消线程实例
  • jQuery(一)
  • Otto开发初探——微服务依赖管理新利器
  • Shadow DOM 内部构造及如何构建独立组件
  • 机器学习中为什么要做归一化normalization
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 配置 PM2 实现代码自动发布
  • 人脸识别最新开发经验demo
  • 事件委托的小应用
  • 数据仓库的几种建模方法
  • 探索 JS 中的模块化
  • 异常机制详解
  • 用quicker-worker.js轻松跑一个大数据遍历
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 国内开源镜像站点
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (分类)KNN算法- 参数调优
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (原創) 未来三学期想要修的课 (日記)
  • (转)德国人的记事本
  • .bashrc在哪里,alias妙用
  • .dwp和.webpart的区别
  • .NET Core 版本不支持的问题
  • .net FrameWork简介,数组,枚举
  • .NET NPOI导出Excel详解
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • ??myeclipse+tomcat
  • @private @protected @public
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [2669]2-2 Time类的定义
  • [asp.net core]project.json(2)
  • [c]统计数字
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images