1 配置Jinja2模板引擎
1.1 安装Jinja2扩展包
pip install Jinja2
1.2 创建Jinja2模板引擎环境
在项⽬包⽬录-->utils⽬录中创建jinja2_env.py⽂件
python
# newsdemo/utils/jinja2_env.py
from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
"""
确保可以使⽤模板引擎中的{{ url('') }} {{ static('') }}这类语句
"""
def environment(**options):
env = Environment(**options)
env.globals.update({
'static': staticfiles_storage.url,
'url': reverse,
})
return env
1.3 配置Jinja2模板引擎
注意 Django2.2中配置模板引擎,⾃带的Django模板引擎配置不能删除
python
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不能直接使⽤context_processor
],
# 补充Jinja2模板引擎环境
'environment': 'mangguo_pro.utils.jinja2_env.environment',
},
}, {
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
},
},
]
验证下是否配置是否正常
python
python .\manage.py runserver
2 配置MySQL数据库
2.1 新建MySQL数据库
python
# 1.新建mgdb数据库
create database mgdb default charset=utf8;
# 2.新建MySQL⽤户
$ create user 'mashibing'@'%' identified by '123456';
# 3.授权mashibing⽤户访问mgdb数据库
$ grant all on mgdb.* to 'mashibing'@'%';
# 4.刷新权限
$ flush privileges;
2.2 项⽬中配置MySQL数据库
python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mgdb',
'USER': 'mashibing',
'PASSWORD': '123456',
'HOST': '192.168.1.4',
'PORT': '3306',
}
}
2.3 安装模块
python
pip install mysqlclient
3 配置redis数据库
3.1 安装django-redis扩展包
python
$ pip install django-redis
使用参考文档:
django-redis 中文文档 --- Django-Redis 4.7.0 文档 (django-redis-chs.readthedocs.io)
3.2 配置Redis数据库
python
# 配置Redis数据库
CACHES = {
"default": { # 默认
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://192.168.1.4:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
"session": { # session
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://192.168.1.4:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
"verify_code": { # 验证码
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://192.168.1.4:6379/2",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"
windows 参考安装:
Windows 安装Redis(图文详解)_windows安装redis-CSDN博客
四 配置项目日志.
4.1 配置项⽬⽇志
python
# 配置项⽬⽇志
LOGGING = {
'version': 1,
'disable_existing_loggers': False, # 是否禁⽤已经存在的⽇志器
'formatters': { # ⽇志信息显示的格式
'verbose': {
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
# 'format': '%(levelname)s %(asctime)s %(module)s % (lineno)d %(message)s'
},
'simple': {
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
# '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(BASE_DIR, 'logs/mangguo.log'), # ⽇志⽂件的位置
'maxBytes': 300 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose'
},
},
'loggers': { # ⽇志器
'django': { # 定义了⼀个名为django的⽇志器
'handlers': ['console', 'file'], # 可以同时向终端与⽂件中输出⽇志
'propagate': True, # 是否继续传递⽇志信息
'level': 'INFO', # ⽇志器接收的最低⽇志级别
},
}
}
4.2 创建⽇志⽂件⽬录
4.3 ⽇志记录器的使⽤
python
import logging
# 创建⽇志记录器
logger = logging.getLogger('django')
# 输出⽇志
logger.debug('测试logging模块debug')
logger.info('测试logging模块info')
logger.error('测试logging模块error')
4.4 Git管理⼯程⽇志
问题:
- 项⽬中⽣成的⽇志⽂件,我们在进⾏版本控制时,不想将⽇志⽂件上传到远程 库。 我们可以忽略*.log的⽂件。
解决⽅法:
- 在.gitignore⽂件中添加*.log
问题: 在⽇志⽬录中忽略⽇志⽂件,上传到远程库的话会导致⽇志⽬录是空⽂件 夹,git不允许上传空⽬录。 怎么办?
- 解决⽅法: 在⽇志⽬录中新建.gitkeep的空⽂件即可。
4.5. ⽇志级别
- DEBUG : 打印全部的⽇志,详细的信息,通常只出现在诊断问题上
- INFO : 打印info,warning,error,critical级别的⽇志,确认⼀切按预期运⾏
- WARNING : 打印warning,error,critical级别的⽇志,⼀个迹象表明,⼀些意想不到的事 情发⽣了,或表明⼀些问题在不久的将来(例如。磁盘空间低"),这个软件还能按预期 ⼯作
- ERROR : 打印error,critical级别的⽇志,更严重的问题,软件没能执⾏⼀些功能
- CRITICAL : 打印critical级别,⼀个严重的错误,这表明程序本身可能⽆法继续运⾏
级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG
低于当前设置⽇志级别就不出⽇志。 例如下⾯设置django⽇志记录器级别为INFO。 低于它的DEBUG级别⽇志就不输出。
五 配置前端静态文件
5.1 将静态⽂件存放⾄项⽬根⽬录下的static⽂件夹中
5.2 指定静态⽂件加载路径
python
STATIC_URL = '/static/'
# 指定静态⽂件存储⽬录
STATICFILES_DIRS = [
os.path.join(os.path.dirname(BASE_DIR), 'static')
]