• django接口开发-代码优化中间件middlewares、自定义response


    # django并没有处理PUT的数据,实际上put传过来的数据在request.body
    # 需要导入 from django.http import QueryDict 来处理数据
    put_data = QueryDict(requests.body)

    #所以可以用middlewares实现QueryDict功能, 所有请求进来后处理成request.PUT,和其它方法一致
    #setting中加入MIDDLEWARE
    #新建myMiddlewares.py
    from
    django.http import QueryDict from django.middleware.common import MiddlewareMixin class PutMethodMiddleware(MiddlewareMixin): def process_request(self,request): '''请求过来之后先走到的这里''' if request.method == 'PUT': request.PUT = QueryDict(request.body)

    #在PutView中引用。

    #引入exception

    #setting中 DEBUG = True,代表是否debug模式,上线后返回错误信息

    from sky.settings import DEBUG
    class ExceptionMiddleware(MiddlewareMixin):
        def process_exception(self, request, exception):
            if not DEBUG:
                return HttpResponse(exception)

    #自定义response返回,创建一个custom_response.py

    from django.http import JsonResponse
    
    class NbResponse(JsonResponse):
        def __init__(self,code=200,msg='操作成功',**kwargs):  #默认code和msg,传入kwargs
            data = {"code":code,"msg":msg}
            data.update(kwargs)
            super().__init__(data=data,json_dumps_params={"ensure_ascii":False}) #重新父类构造方法   #json_dumps_params--有中文默认显示

    #在custom_views逻辑中引用NbResponse,
    from example.custom_response import NbResponse
    传入返回数据封装
    .....

    return NbResponse(data=data_list) #其实等同于return JsonResponse 只是重写了一层
  • 相关阅读:
    Java实现 LeetCode 416 分割等和子集
    Java实现 LeetCode 416 分割等和子集
    在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs)
    【详解】嵌入式开发中固件的烧录方式
    嵌入式系统烧写uboot/bootloader/kernel的一般方法
    Linux下USB烧写uImage kernel
    Xmanager连接CentOS的远程桌面
    命令行利器Tmux
    u-boot中分区和内核MTD分区关系
    uboot环境变量与内核MTD分区关系
  • 原文地址:https://www.cnblogs.com/whcp855/p/13651529.html
Copyright © 2020-2023  润新知