zoukankan      html  css  js  c++  java
  • 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 只是重写了一层
  • 相关阅读:
    C# 本质论 第三章 操作符和控制流
    LeetCode Online Judge 1. Two Sum
    C# 本质论 第二章 数据类型
    C# 本质论 第一章 C#概述
    TMDS代码
    `define `ifdef `elseif的巧妙使用
    加法器(行波与超前、全加与半加)
    DCI技术
    **标识符
    电容放置问题
  • 原文地址:https://www.cnblogs.com/whcp855/p/13651529.html
Copyright © 2011-2022 走看看