二、 配置环境
1. 配置开发环境
项目环境分为开发环境
和生成环境
。
- 开发环境:用于编写和调试项目代码。
- 生产环境:用于项目线上部署运行。
1.1 新建配置文件
1)准备配置文件目录
- 在工程同名文件夹下新建包,命名为
settings
,作为配置文件目录
2)准备开发和生产环境配置文件
- 在配置包
settings
中,新建开发dev.py
和生产环境prod.py
配置文件
3)准备开发环境配置内容
- 将默认的配置文件
settings.py
中的内容拷贝至dev.py
1.2 指定开发环境配置文件
配置完成后:运行程序,测试结果。
1.3 配置Jinja2模块引擎
-
安装Jinja2扩展包
pip install Jinja2==2.10.1
-
配置Jinja2模板引擎
# 打开dev.py文件,找到模板配置项:TEMPLATES,修改文件中的模板配置引擎 TEMPLATES = [ { 'BACKEND': 'django.template.backends.jinja2.Jinja2', # 配置jinja2模板引擎 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 配置模板文件加载路径 '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', ], }, }, ]
-
工程同名目录下新建文件夹
templates
,用以放置模板文件
1.4 补充Jinja2模板引擎环境
-
在工程同名目录文件下新建包,命名为:
utils
,在包内创建jinja2_env.py
文件作为Jinja2模板引擎环境配置文件
-
编写Janja2模块引擎环境配置代码
from jinja2 import Environment from django.contrib.staticfiles.storage import staticfiles_storage from django.urls import reverse def jinja2_environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, 'url': reverse, }) return env
-
加载Jinja2模板引擎环境
TEMPLATES = [ { 'BACKEND': 'django.template.backends.jinja2.Jinja2', # jinja2模板引擎 'DIRS': [os.path.join(BASE_DIR, 'templates')], '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', ], # 补充Jinja2模板引擎环境 'environment': 'meiduo_mall.utils.jinja2_env.jinja2_environment', }, }, ]
配置完成后:运行程序,测试结果。
1.4 配置MySQL数据库
项目数据存储服务采用MySQL数据库
-
新建MySQL数据库
1)新建MySQL数据库:meiduo# create database 数据库名 charset=utf8; create database meiduo charset=utf8;
2)新建MySQL用户[可选]
# create user 用户名 identified by '密码'; create user meiduo identified by '123456';
3)授权
meiduo
用户访问meiduo
数据库[可选]# grant all on 数据库名.* to '用户名'@'%'; grant all on meiduo.* to 'meiduo'@'%'; #授权'meiduo'用户全部权限
4)授权结束后刷新特权
flush privileges;
-
配置MySQL数据库
打开dev.py
配置文件,找到数据库配置项:DATABASES
,修改配置如下:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'HOST': '127.0.0.1', # 数据库主机 'PORT': 3306, # 数据库端口 'USER': 'meiduo', # 数据库用户名 'PASSWORD': '123456', # 数据库用户密码 'NAME': 'meiduo' # 数据库名字 }, }
可能出现的错误:
Error loading MySQLdb module: No module named 'MySQLdb'.
出现此错误的原因:- Django中操作MySQL数据库需要驱动程序MySQLdb
- 目前项目虚拟环境中没有驱动程序MySQLdb
解决办法:
- 安装PyMySQL扩展包
- 因为MySQLdb只适用于Python2.x的版本,Python3.x的版本中使用PyMySQL替代MySQLdb
-
安装PyMySQL扩展包
1)安装驱动程序pip install PyMySQL==0.9.3
2)在工程同名子目录的
__init__.py
文件中,添加如下代码:from pymysql import install_as_MySQLdb install_as_MySQLdb()
配置完成后:运行程序,测试结果。
1.5 配置Redis数据库
项目数据缓存服务采用Redis数据库
-
安装
django-redis
扩展包
1)安装django-redis
扩展包pip install django-redis==4.10.0
2)
django-redis
使用说明文档:点击进入文档 -
配置Redis数据库
打开dev.py
配置文件,在文件最下方插入以下数据:CACHES = { "default": { # default:默认的Redis配置项,采用0号Redis库 "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } }, "session": { # session:状态保持的Redis配置项,采用1号Redis库 "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } }, } SESSION_ENGINE = "django.contrib.sessions.backends.cache" #修改session存储机制使用Redis保存 SESSION_CACHE_ALIAS = "session" # 使用名为"session"的Redis配置项存储session数据
配置完成后:运行程序,测试结果.
1.6 配置工程日志
项目的日志记录采用logging模块
。
-
配置工程日志
打开dev.py
配置文件,在文件最下方插入以下数据:LOGGING = { 'version': 1, 'disable_existing_loggers': False, # 是否禁用已经存在的日志器 'formatters': { # 日志信息显示的格式 'verbose': { 'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s' }, 'simple': { 'format': '%(levelname)s %(module)s %(lineno)d %(message)s' }, }, 'filters': { # 对日志进行过滤 'require_debug_true': { # django在debug模式下才输出日志 '()': 'django.utils.log.RequireDebugTrue', }, }, 'handlers': { # 日志处理方法 'console': { # 向终端中输出日志 'level': 'INFO', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', 'formatter': 'simple' }, 'file': { # 向文件中输出日志 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': os.path.join(os.path.dirname(BASE_DIR), 'logs/meiduo.log'), # 日志文件的位置 'maxBytes': 300 * 1024 * 1024, 'backupCount': 10, 'formatter': 'verbose' }, }, 'loggers': { # 日志器 'django': { # 定义了一个名为django的日志器 'handlers': ['console', 'file'], # 可以同时向终端与文件中输出日志 'propagate': True, # 是否继续传递日志信息 'level': 'INFO', # 日志器接收的最低日志级别 }, } }
-
准备日志文件目录
工程目录下新建logs
文件夹,作为日志文件存放目录
-
Git管理工程日志
提示1:开发过程中,产生的日志信息不需要代码仓库进行管理和记录。
提示2:建立代码仓库时,生成的忽略文件中已经默认忽略掉了
*.log
问题:
- logs文件目录需求被Git仓库记录和管理。
- 当把
*.log
都忽略掉后,logs文件目录为空。 - 但是,Git是不允许提交一个空的目录到版本库上的。
解决:
- 在空文件目录中建立一个 .gitkeep 文件,然后即可提交
-
知识要点
1)本项目最低日志等级设置为:INFO
2)创建日志记录器的方式:logger = logging.getLogger('django')
3)日志记录器的使用:
logger.info('测试logging模块info')
4)在日志
loggers
选项中可以指定多个日志记录器
1.7 配置前端静态文件
项目中需要使用静态文件,比如css、images、js 等等。
-
准备静态文件
把前端静态文件static
复制到项目同名文件夹下
-
指定静态文件加载路径
打开dev.py
配置文件,找到静态文件配置项:STATIC_URL
,在其下方插入数据STATICFILES_DIRS
:STATIC_URL = '/static/' # 配置静态文件加载路径 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]