REST framework 响应模块

from rest_framework.response import Response

源码

class Response(SimpleTemplateResponse)
    def __init__(self, data=None, status=None,
                 template_name=None, headers=None,
                 exception=False, content_type=None):
     """
        :param data: 响应数据
        :param status: http响应状态码
        :param template_name: drf也可以渲染页面,渲染的页面模板地址(不用了解)
        :param headers: 响应头
        :param exception: 是否异常了
        :param content_type: 响应的数据格式(一般不用处理,响应头中带了,且默认是json)
    """
    pass

使用:常规实例化响应对象

# status就是解释一堆 数字 网络状态码的模块
from rest_framework import status就是解释一堆 数字 网络状态码的模块
# 一般情况下只需要返回数据,status和headers都有默认值
return Response(data={数据}, status=status.HTTP_200_OK, headers={设置的响应头})

 自定义响应模块

responses.py

from rest_framework.response import Response

class APIResponse(Response):
    def __init__(self, data_status=0, data_msg='ok', results=None, http_status=None, headers=None, exception=None, **kwargs):
        # data的初始状态: 状态码与状态信息
        data = {
            'status': data_status,
            'msg':data_msg
        }
        # data的响应数据体: results (其可能是False,0等数据, 这些数据某些情况下也会作为合法数据返回)
        if results is not None:
            data['results'] = results
        # data响应的其他内容:
        # if kwargs is not None:
        #     for k, v in kwargs.items():
        #         setattr(data, k, v)
        data.update(kwargs)
        super().__init__(data=data, status=http_status, headers=headers, exception=exception)

异常响应

from rest_framework.response import Response
from rest_framework import status

def api_error(code, msg):
    err_resp = {'error_msg': msg}
    return Response(err_resp, status=code)

# permission check
permission = reques.user.is_staff
if not permission:
   error_msg = 'Permission denied.'
   return api_error(status.HTTP_403_FORBIDDEN, error_msg)

其他

from rest_framework import exceptions

# Token过期 退出登录
raise exceptions.AuthenticationFailed('Token has expired')

# 权限问题 退出登录
raise exceptions.PermissionDenied("Permission denied")

# 没提供身份凭证 退出登录
raise exceptions.NotAuthenticated()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值