1.创建日志
(1)在settings/dev.py文件中追加如下配置:
# 日志
LOGGING = {
'version': 1, # 使用的日志模块的版本,目前官方提供的只有版本1,但是官方有可能会升级,为了避免升级出现的版本问题,所以这里固定为1
'disable_existing_loggers': False, # 是否禁用其他的已经存在的日志功能?肯定不能,有可能有些第三方模块在调用,所以禁用了以后,第三方模块无法捕获自身出现的异常了。
'formatters': { # 日志格式设置,verbose或者simple都是自定义的
'verbose': { # 详细格式,适合用于开发人员不在场的情况下的日志记录。
# 格式定义:https://docs.python.org/3/library/logging.html#logrecord-attributes
# levelname 日志等级
# asctime 发生时间
# module 文件名
# process 进程ID
# thread 线程ID
# message 异常信息
'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
'style': '{', # 变量格式分隔符
},
'simple': { # 简单格式,适合用于开发人员在场的情况下的终端输出
'format': '{levelname} {message}',
'style': '{',
},
},
'filters': { # 过滤器
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': { # 日志处理流程,console或者mail_admins都是自定义的。
'console': {
'level': 'DEBUG', # 设置当前日志处理流程中的日志最低等级
'filters': ['require_debug_true'], # 当前日志处理流程的日志过滤
'class': 'logging.StreamHandler', # 当前日志处理流程的核心类,StreamHandler可以帮我们把日志信息输出到终端下
'formatter': 'simple' # 当前日志处理流程的日志格式
},
# 'mail_admins': {
# 'level': 'ERROR', # 设置当前日志处理流程中的日志最低等级
# 'class': 'django.utils.log.AdminEmailHandler', # AdminEmailHandler可以帮我们把日志信息输出到管理员邮箱中。
# 'filters': ['special'] # 当前日志处理流程的日志过滤
# }
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
# 日志位置,日志文件名,日志保存目录logs必须手动创建,注意目录位置,跟主应用统计目录,所以添加parent
'filename': BASE_DIR.parent / "logs/fuguang.log",//文件夹路径以及文件要设置对
# 单个日志文件的最大值,这里我们设置300M
'maxBytes': 300 * 1024 * 1024,
# 备份日志文件的数量,设置最大日志数量为10
'backupCount': 10,
# 日志格式:详细格式
'formatter': 'verbose'
},
},
'loggers': { # 日志处理的命名空间
'django': {
'handlers': ['console','file'], # 当基于django命名空间写入日志时,调用那几个日志处理流程
'propagate': True, # 是否在django命名空间对应的日志处理流程结束以后,冒泡通知其他的日志功能。True表示允许
},
}
}
(2)大概是这样的文件夹路径
2.使用redis
(1)settings配置redis
3.发短信
(1)pip install ronglian_sms_sdk
(2)配置settings
(3)写一个方法函数
(4)视图调用
4.JWT认证
(1)pip install djangorestframework-simplejwt
(2)pip install cryptography==41.0.5
(3)配置settings
(4)调用jwt
(5)指定自定义载荷信息,序列化器(更安全)
(6)登录视图调用
5.celery 异步
(1)pip3 install -U celery
(2)pip install eventlet
(3)celery作为一个单独项目运行
(4)配置main.py
(5)配置文件settings.py
(6)创建任务文件sms/tasks.py,并创建任务
(7))运行celery
celery -A mycelery.main worker -P eventlet -c 2 -l info
0.celery: 这是启动 Celery 命令行工具的命令。
1.-A mycelery.main: 这个参数指定了 Celery 应用的入口模块。mycelery 是 Python 包的名称,而 main 是该包中包含 Celery 应用实例的 Python 文件。这个实例通常是通过 app = Celery() 这样的语句创建的。
2.worker: 这个参数告诉 Celery 启动一个工作进程(worker),而不是其他类型的进程,比如 Celery 的控制面板或事件服务器等。
3.-P eventlet: 这个参数指定了工作进程使用的进程池的类型。eventlet 是一个基于协程的并发库,它允许 Celery 工作进程以非阻塞的方式运行,从而提高并发处理能力。
4.-c 2: 这个参数指定了工作进程应该运行的并发数,也就是同时可以执行的任务数量。在这个例子中,2 表示工作进程将使用两个并发任务。
5.-l info: 这个参数设置了日志记录的级别。info 表示日志将记录信息级别的消息,这对于了解 Celery 工作进程的运行情况是有帮助的。
(8)完善main.py
6.用异步发短信
(1)配置settings容联云
(2)写一个发短信的方法函数
(3)在异步任务调用
(4)写视图
(5)写路由
7.admin站点
(1)例如课程管理:
(2)创建模型类
(3)安装simpleui
pip install django-simpleui
(4)配置settings
(5)主路由打开admin
(6)安装ckedtior:富文本编辑器
pip install django-ckeditor
配置settings
# ckeditor富文本编辑器配置
# 上传文件的存储路径
CKEDITOR_UPLOAD_PATH = "ckeditor/" //创建ckeditor文件夹
# 工具条配置
CKEDITOR_CONFIGS = {
'default': {
# 'toolbar': 'full', # full 显示全部工具 Basic 显示基本工具
'toolbar': 'Custom', # 自定义工具条的显示数量
'toolbar_Custom': [
['Bold', 'Italic', 'Underline', 'Image', 'Styles','Format', 'Font', 'Fontsize'],
['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
['Link', 'Unlink'],
['RemoveFormat', 'Source']
],
# 设置编辑器的高度
'height': 300,
},
}
(7)配置图片
7.1 配置settings
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'
7.2 创建文件夹目录
7.3 创建模型类
(8)在主路由的url中,配置ckeditor
path('ckeditor/', include('ckeditor_uploader.urls')),
(9)自定义管理站点的展示内容
(10)Admin站点配置,在settings配置