美文网首页
django日志和rest学习

django日志和rest学习

作者: 憨猜猜 | 来源:发表于2019-03-26 17:33 被阅读0次

一.日志

在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

相关文章

网友评论

      本文标题:django日志和rest学习

      本文链接:https://www.haomeiwen.com/subject/uqrnvqtx.html