一.日志
在settings文件中末尾添加
LOG_PATH = os.path.join(BASE_DIR,'logs')
LOGGING={
# 必须为1
'version' : 1,
# 禁用日志
'disable_existing_loggers':False,
'loggers':{
# 默认为空,接收数据
'':{
# 将系统接收到的日志,交给handlers去处理
'handlers' : ['console'],
'level' : 'INFO',
}
},
'handlers' : {
'console' : {
# handler将日志信息存放在day07/logs/sys.log
'filename' : '%s/%s' % (LOG_PATH,'sys.log'),
'level': 'INFO', # 指定的级别
# 指定日志的格式
'formatter' : 'default',
# 指定是否备份
'class' : 'logging.handlers.RotatingFileHandler',
# 日志文件:5M
'maxBytes' : 5*1024*1024,
}
},
'formatters' : {
'default' : {
'format' : '%(asctime)s %(message)s'
}
}
}
image.png
image.png
在settings文件50行左右添加相对地址utils.logMiddleware.LogMiddle
image.png
在项目目录中的utils中logMiddleware.py文件中写入
import logging
import time
from django.utils.deprecation import MiddlewareMixin
# 获取日志logger
logger = logging.getLogger(__name__)
class LogMiddle(MiddlewareMixin):
# 日志处理中间件
def process_request(self, request):
# 存放请求过来时的时间
request.init_time = time.time()
return None
def process_response(self, request, response):
try:
# 请求响应时耗时时长
total_time = time.time() - request.init_time
# 请求路径
path = request.path
# 请求方式
method = request.method
# 响应状态码
status_code = response.starus_code
# 响应内容
content = response.content
# 记录信息
message = '%s %s %s %s %s' % (total_time, path, method,
status_code, content)
logger.info(message)
except:
logger.critical('系统错误')
return response
image.png
image.png
然后执行里面的任意路由日志就会自动生成
image.png
二.rest学习
路由创建
image.png
rest方法
class ArticleView(viewsets.GenericViewSet,
mixins.ListModelMixin,
mixins.RetrieveModelMixin,
mixins.DestroyModelMixin, # 销毁
mixins.CreateModelMixin,
mixins.UpdateModelMixin,
):
# 获取资源所对应的数据信息
queryset = Article.objects.all()
# 序列化
serializer_class = ArticleSerializer
def list(self, request, *args, **kwargs):
# 业务逻辑
queryset = self.get_queryset()
# 将对象转化成json
# a = self.get_serializer(queryset, many=True)
a = [{'id': i.id, 'title': i.title} for i in queryset]
# return Response(a)
b = []
for i in queryset:
data = {
'id': i.id,
'title': i.title
}
b.append(data)
return Response(b)
def retrieve(self, request, *args, **kwargs):
# 获取主键所对应的对象信息
instance = self.get_object()
# 序列化
serializer = self.get_serializer(instance)
return Response(serializer.data)
def perform_destroy(self, instance):
# 实现软删除
instance.is_delete = 1
instance.save()
image.png
image.png
image.png
创建一个校检文件
image.png
网友评论