Django 系列篇(三):配置篇(下)
系列导读
01. Django 系列篇(一):Hello World!
1. 模板
Django 中的模板引擎在创建项目的时候可以选择,包含:Django Templats 和 Jinja2
模板是一种特殊的 HTML,里面会包含一些变量和指令,配置模板引擎解析,生成一个完整的 HTML 页面,返回给浏览器展示出来。
创建一个新项目时,在 settings.py 文件中,Django 初始化的模板配置信息如下:
需要注意的是,实际项目开发中,只需要配置 DIRS 路径即可,根目录下的 templates 文件夹用于存放通用的模板文件。
# settings.py
# 配置模板的路径
# 包含:根目录的 templates 目录和 App 下的 templates 目录
# 注意:每一个 App 下都可以新建一个 templates 目录,然后配置进去
'DIRS': [os.path.join(BASE_DIR, 'templates'),
os.path.join(BASE_DIR, 'secondapp/templates')
]
另外,每一个 App 下也可以新建一个 templates 目录,用于保存当前 App 所需要模板文件。
2. 数据库
数据库配置是用于实现项目和数据库的连接,实现数据的增删查改。
Django 提供了 4 种数据库引擎,分别是:
# settings.py
# 4 种数据库引擎
# 数据库postgresql
'django.db.backends.postgresql'
# mysql数据库
'django.db.backends.mysql'
# sqlite数据库
'django.db.backends.sqlite3'
# oracle数据库
'django.db.backends.oracle'
Django 新建一个项目的时候,默认使用 Sqlite3 数据库,常用于移动端,配置信息如下:
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
以连接 Mysql 为例
要实现项目和数据库的连接,首先需要安装 mysqlclient 依赖库
# 安装依赖库:mysqlclient
pip3 install mysqlclient
接着,在配置文件 setttings.py 中配置 Mysql 的数据库基本信息,包含:用户名、密码、数据库名、HOST 及端口号
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# },
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django', # 数据库名
'USER': 'root', # 登录用户名
'PASSWORD': '123456', # 登录密码
'HOST': '139.199.**.**', # 服务器地址
'PORT': '3306', # 数据库端口号,一般为:3306
},
}
最后,使用 python3 manage.py migrate 命令将内置的迁移文件在 Mysql 数据库中生成对应的数据表
如果执行上面的命令没法连接 Mysql Server,可以通过修改 user 表的 host 项来解决这个问题。
# 登录数据库,修改mysql数据库内,user表的host字段
use mysql;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;
使用 Navicat 客户端可以查看到默认生成的数据表。
对于一些数据量很大的系统,单个数据库存储可能没法满足服务器负载要求,需要将数据存储到多数据库服务器
在配置文件 settings.py 中,Django 可以配置多个数据库,使用 default 关键字指定一个默认的数据库
3. 中间件
中间件在 Django 中,是一个轻量级别的插件系统,用来处理 Django 中的请求和响应的框架级别的钩子
中间件的作用是处理用户 Request 请求和 Response 响应内容,对 Django 的输入、输出做整体的修改。
可以在中间件列表下添加 LocaleMiddleware 中间件,可以让内置的功能支持中文显示。
# 中间件列表
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware', # 新增中间件,支持中文显示
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
一些复杂的功能可以通过自定义中间件类,然后在 settings.py 进行配置,激活中间件即可。
需要注意的是,中间件的加入顺序是固定的,不能随意更改顺序,否则会导致程序异常。
Django 项目默认的中间件配置可以满足大部分开发需求,一般不需要进行更改。