• 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 只是重写了一层
  • 相关阅读:
    学习的成本
    .Net Framework Client Profile 和 .Net Framework的区别[转]
    惆怅的开始
    Android Json解析
    android键盘的Done按钮
    百度地图SDK v2.1.2使用方法
    使用百度地图SDK 这是之前版本 现在的sdk v2-1-2使用方法完全改变
    svn
    Android 图片相关
    Android开发 开启闪光灯 关键代码
  • 原文地址:https://www.cnblogs.com/whcp855/p/13651529.html
Copyright © 2020-2023  润新知