在drf中实现自定义响应类(代码片段)

author author     2023-04-30     324

关键词:

我的views.py。

class OptiResponse(Response):
    def __init__(self, token=None, code=None, headers=None):
        if code==0:
            if token:
                data = 
                    "status":
                        "code": 0,
                        "error_message": "" 
                    ,
                    "data":
                        "token":token,
                    
                   
            data = 
                    "status":
                        "code": 0,
                        "error_message": "" 
                    ,
                    "data":

                    
            
        data = 
                "status":
                    "code": 1,
                    "error_message": "" 
                ,
                "data":

            
        

        self.token=token
        self.data = data

        if headers:
            for name, value in six.iteritems(headers):
                self[name] = value

    @property
    def rendered_content(self):
        return ret

    @property
    def status_text(self):
        return responses.get(self.status_code, '')

    def __getstate__(self):
        return state


class LoginView(generics.CreateAPIView):
    serializer_class = serializers.LoginSerializer

    """Authenticate and Login a user."""
    def post(self, request, format=None):
        serializer = self.serializer_class(data=request.data)

        if serializer.is_valid():
            email = serializer.data['email']
            password = serializer.data['password']
            remember = serializer.data['remember_me']

            user = authenticate(email=email, password=password)

            if user:
                if user.is_active:
                    if remember:
                        request.session.set_expiry(120)

                    login(request, user)
                    token = Token.objects.get(user=user)
                    return OptiResponse(0, token.key)

上面是我当前应用视图的快照。我正在研究DRF API,我想自定义DRF的Response类。我想用两个参数来调用响应,如 'Reponse(code, token)' 如上图,其中其余API输出的格式应该是如下图所示的代码值。

                 
                    "status":
                        "code": 0, #either 0 in success or 1 in error.
                        "error_message": "" 
                    ,
                    "data":

                    
                 

是否可以通过子类来实现 'Response' 在我自己的班级里。可能是我做的方法不对。请给我建议可能的解决方案。

谢谢!在此先说一句。

答案

He Paulo,如果你想创建你的自定义响应,你应该。

  • 用父类SimpleTemplateResponse notResponse来编写你的类。
  • 并注意你的回复的内容_类型。

from django.template.response import SimpleTemplateResponse

class MyCustomResponse(SimpleTemplateResponse):
    def __init__(self,code=None,token=None):


        super(Response, self).__init__(None, status=None)


        """
          PUT YUOR DATA CODES HERE ....
        """


        self.token = token
        self.code = code

        if headers:
            for name, value in six.iteritems(headers):
                self[name] = value

     @property
     def rendered_content(self):
         renderer = getattr(self, 'accepted_renderer', None)
         media_type = 'application/json'
         context = getattr(self, 'renderer_context', None)

         assert renderer, ".accepted_renderer not set on Response"
         assert media_type, ".accepted_media_type not set on Response"
         assert context, ".renderer_context not set on Response"
         context['response'] = self

         content_type = 'application/json'


         self['Content-Type'] = content_type

        ret = renderer.render(self.data, media_type, context)

         if not ret:
             del self['Content-Type']

         return ret

如何在 webflux 中实现自定义身份验证管理器时对未经授权的请求响应自定义 json 正文

】如何在webflux中实现自定义身份验证管理器时对未经授权的请求响应自定义json正文【英文标题】:Howtoresponsecustomjsonbodyonunauthorizedrequestswhileimplementingcustomauthenticationmanagerinwebflux【发布时间】:2020-11-2703:52:15【问题描述】:我正... 查看详情

在 Gradle Android 中实现自定义库时未解析类

】在GradleAndroid中实现自定义库时未解析类【英文标题】:ClassnotresolvedwhenimplementingcustomlibraryinGradleAndroid【发布时间】:2022-01-0201:32:22【问题描述】:我创建了一个android库并在Jitpack中发布。目前,我的构建在Jitpack中取得了成功... 查看详情

如何在离子中实现自定义日历?(代码片段)

具体来说,我想实现它嵌入页面,这就是我使用这个日历可以实现的目标,https://github.com/twinssbc/Ionic2-Calendar:那么,我可以使用上面的日历获得我想要的东西吗?或者你有更好的建议我应该使用吗?答案我不知道这是否仍然有... 查看详情

内部类,drf响应类,序列化与反序列化(代码片段)

内部类#概念:将类定义在一个类的内部,被定义的类就是内部类#特点:内部类及内部类的所以名称空间,可以直接被外部类访问的#应用:通过内部类的名称空间,给外部类额外拓展一些特殊的属性(配置),典型的Meta内部类-配... 查看详情

在spring boot中实现自定义错误

】在springboot中实现自定义错误【英文标题】:Implementthecustomerrorinspringboot【发布时间】:2019-04-0702:58:26【问题描述】:我想页面。在应用程序中,id是主键,所以当没有给出id时,它会将请求传输到页面,但我希望应用程序在索... 查看详情

如何在 WordPress 中实现自定义标头的引导小部件代码?

】如何在WordPress中实现自定义标头的引导小部件代码?【英文标题】:HowtocanimplementbootstrapwidgetcodeforcustomheaderinWordPress?【发布时间】:2019-07-1703:22:25【问题描述】:我在网站上工作,我不是引导程序的专业人士。这是我的主题标... 查看详情

在 MVC 中实现自定义身份和 IPrincipal

】在MVC中实现自定义身份和IPrincipal【英文标题】:ImplementingaCustomIdentityandIPrincipalinMVC【发布时间】:2010-12-2510:29:21【问题描述】:我有一个基本的MVC2beta应用程序,我正在尝试实现自定义身份和主体类。我创建了实现IIdentity和IPr... 查看详情

如何在自定义 Spring 存储库中实现自定义方法? [复制]

】如何在自定义Spring存储库中实现自定义方法?[复制]【英文标题】:Howtoimplementcustommethodincustomspringrepository?[duplicate]【发布时间】:2016-03-2719:36:21【问题描述】:假设我想要一个方法,获取超级主客户,有id=0。我有客户类:@Ent... 查看详情

如何在 keras 中实现自定义指标?

】如何在keras中实现自定义指标?【英文标题】:howtoimplementcustommetricinkeras?【发布时间】:2016-10-0601:13:54【问题描述】:我得到这个错误:sum()得到了一个意外的关键字参数\'out\'当我运行这段代码时:importpandasaspd,numpyasnpimportkera... 查看详情

drf序列化器之请求响应以及视图(代码片段)

...、保存、转换数据)控制数据库查询的执行调用请求类和响应类[这两个类也是由drf帮我们再次扩展了一些功能类。 为 查看详情

在 Django 中实现自定义模板标签时遇到问题

】在Django中实现自定义模板标签时遇到问题【英文标题】:HavingtroubleimplementingcustomtemplatetagsinDjango【发布时间】:2012-04-0101:23:15【问题描述】:我正在尝试在我的应用程序中实现一些自定义模板标签,并更好地构建它。烦人的部... 查看详情

winform中实现自定义屏保效果(附代码下载)(代码片段)

场景效果  注:博客主页:https://blog.csdn.net/badao_liumang_qizhi关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。实现新建form窗体,窗体中设计布局如下,一个Panel中拖拽四个label,然后添加两个Button,再... 查看详情

在 MembershipProvider 中实现自定义“ValidateUser”

】在MembershipProvider中实现自定义“ValidateUser”【英文标题】:Implementcustom"ValidateUser"inMembershipProvider【发布时间】:2011-03-2510:32:38【问题描述】:我正在实现一个自定义MembershipProvider,我正在尝试使用ValidateUser方法来验证... 查看详情

如何在 iPhone 中实现自定义相机功能? [关闭]

】如何在iPhone中实现自定义相机功能?[关闭]【英文标题】:HowtoimplementcustomcamerafunctionalityiniPhone?[closed]【发布时间】:2011-08-1605:07:13【问题描述】:我想开发一种功能,以便在iPhone应用程序中实现自定义相机功能,所以请给我... 查看详情

android中实现自定义xmpp消息包收发(代码片段)

       在Android平台实现XMPP即时通讯主要是使用asmack这个包,asmack是XMPP协议的实现。但是asmack只能帮助我们实现一些基本消息包的收发,如果需要实现特定的自定义消息包收发需要我们自己处理。一、asmack消息的发送... 查看详情

在具有条件的 keras 中实现自定义损失函数

】在具有条件的keras中实现自定义损失函数【英文标题】:Implementingcustomlossfunctioninkeraswithcondition【发布时间】:2018-12-0813:49:59【问题描述】:我需要一些有关keras损失函数的帮助。我一直在使用Tensorflow后端在keras上实现自定义损... 查看详情

在 Freemarker 中实现自定义 Escaper

】在Freemarker中实现自定义Escaper【英文标题】:ImplementaCustomEscaperinFreemarker【发布时间】:2010-11-0920:21:59【问题描述】:Freemarker可以使用以下方式进行文本转义:<#escapexasx?html>Foo:$someValBar:$someOtherVal</#escape>xml、xhtml和html... 查看详情

为啥不推荐使用 JScript 在 WiX 中实现自定义操作?

】为啥不推荐使用JScript在WiX中实现自定义操作?【英文标题】:WhyisusingJScriptforimplementingcustomactionsinWiXnotrecommended?为什么不推荐使用JScript在WiX中实现自定义操作?【发布时间】:2013-07-1008:19:33【问题描述】:在浏览有关WiX的文... 查看详情