Django Rest Framework从serializer.data获取密钥

时间:2016-06-23 11:41:03

标签: python django django-rest-framework

好的,所以我的问题很简单,在调用def create()之后:它返回了多个字典,所以我想从这个字典中得到一个密钥。

这是我的观点:

def create(self, request, *args, **kwargs):
    #data = json.dumps(request.data)
    user = self.request.user
    if user.groups.filter(name='advertisers').exists():
        serializer = CampaignSerializer(data=request.data)
        adsImageSerializer = AdsImagesSerializer()
        if serializer.is_valid():
            serializer.save(advertiser=self.request.user)
            raise Exception(serializer.validated_data['id'])
            return Response(serializer.data, status=status.HTTP_201_CREATED,)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    else:
        return Response({
                            'status':'Unauthorized',
                            'message':'This account is not authorized to do this request'
                    }, status=status.HTTP_401_UNAUTHORIZED)
    return super(CampaignStart, self).perform_create(serializer)

你可以看到我试图通过

中的断点来访问它
  

引发异常(serializer.validated_data ['id'])

当我打印时:

  

引发异常(serializer.data)

它让我回答:

  

{'advertiser':OrderedDict([('username',u'demo'),('first_name',u'genti'),('last_name',u'elmazi'),('email',u 'demo@demo.com'),('密码',u'pbkdf2_sha256 $ 24000 $ VuPC2uIB4Lb1 $ Rc9 ++ gdVbAtnNgsD9XxzUx8vlVIaIxztfjNKRY0FOwM ='),('广告客户',OrderedDict([('phone',u'+ 38971666022'),( '地址',u'balindollska bb'),('state',u'macedonia'),('city',u'gostivar'),('ZIP',u'1230'),('country',u 'MK'),(''company',u'maxleads'),('web_name',u'maxleads'),('web_url',u'http://www.test.com'),('web_desc',u'demo description'),('web_category',u'Automotive'),('online_revenue',546546),('meth_of_conv',u'pay-per-sale')]))]),'name':u'Demo广告系列','end_date':'2016-06-23','pay_off':30,'说明':u'demo description','CPC':2,'locations':u'Macedonia','预算': 10,'佣金':10,'关键字':u'keyword 1,关键字2','ads':[OrderedDict([('id',26),('headline',u'Demo Headline'),( 'description_1',u''),('description_2',u''),('display_url',u''),('final_url',u''),('mobile_url',u''' ),('广告客户',1)])],'adsImages':[],'类型':u'PayPerSale','start_date':'2016-06-23','land_page':你'{{3 '}','CPM':1}

我想访问它:

  

ads':[OrderedDict([('id',26),

我该怎么做?

1 个答案:

答案 0 :(得分:1)

“id”键位于“abs”字典中,因此您需要先访问“abs”。然后访问“id”键。

试试这个:

TrimStart().TrimEnd()