首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在django restframework中序列化数据

在django restframework中序列化数据
EN

Stack Overflow用户
提问于 2015-12-16 18:24:26
回答 1查看 457关注 0票数 1

我通过Django restframework中的POST请求获得以下数据。我需要序列化这些数据,这些数据包含多个模型的数据。

代码语言:javascript
复制
data={'admin-1':
    {'first_name':'john'
    ,'last_name':'white'
    ,'job_title':'CEO'
    ,'email':'test1@gmail.com'
    },
'admin-2':
    {'first_name':'lisa'
    ,'last_name':'markel'
    ,'job_title':'CEO'
    ,'email':'test2@gmail.com'
    },
'company-detail':{'description':'We are a renowned engineering company'
,'size':'1-10'
,'industry':'Engineering'
,'url':'http://try.com'
,'logo':''
,'addr1':'1280 wick ter'
,'addr2':'1600'
,'city':'rkville'
,'state':'md'
,'zip_cd':'12000'
,'phone_number_1':'408-393-254'
,'phone_number_2':'408-393-221'}

r = requests.post('http://127.0.0.1:8000/api/create-company-profile/',data=data)
print r.status_code
print r.text

这是CreateAPI的视图-

代码语言:javascript
复制
class CompanyCreateApiView(CreateAPIView):

    def post(self, request, *args, **kwargs):
        print 'request ==', request
        print 'request.data == ', request.data['admin-2']

        import json
        print json.loads(request.data)

        data=json.dumps({'status':'success'})
        return Response(data, status=status.HTTP_200_OK)

基本上,我需要反序列化数据,但得到这个错误。

请求"/Users/prem/.virtualenvs/ghost/lib/python2.7/site-packages/django/core/handlers/base.py",request.data == job_title内部服务器错误:/api/company/ Traceback (最近一次调用):get_response response =wrapped_callback(请求,*callback_args,文件"/Users/prem/.virtualenvs/ghost/lib/python2.7/site-packages/django/views/decorators/csrf.py",第57行,在wrapped_view返回view_func(*args,**kwargs)文件"/Users/prem/.virtualenvs/ghost/lib/python2.7/site-packages/django/views/generic/base.py",第69行,查看返回self.dispatch(请求,*args,**kwargs)文件"/Users/prem/.virtualenvs/ghost/lib/python2.7/site-packages/rest_framework/views.py",行452,在调度响应= self.handle_exception(exc)文件"/Users/prem/.virtualenvs/ghost/lib/python2.7/site-packages/rest_framework/views.py",行449中,在调度响应=处理程序(请求,*args,**kwargs)文件"/Users/prem/Documents/Ghost/positionmatch-new/menkes-server-master/menkesserver/human_resources/views.py",第81行,在打印后的json.loads(request.data)文件行338,在loads中返回_default_decoder.decode(s)文件_default_decoder.decode行365,在解码obj中,end = self.raw_decode(s,idx=_w(s,0).end() TypeError:预期字符串或缓冲区)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-16 18:28:47

在您的视图中,不应该需要手动解码POST数据。只要您使用的是JSONParser (如解析器文档中所描述的),request.data就应该已经被完全解析了。

此外,您发送到视图的请求可能不是您所认为的那样。如果您想发送带有请求的JSON数据,则需要更加明确一些。如请求文件中的示例所示

代码语言:javascript
复制
>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}

>>> r = requests.post(url, data=json.dumps(payload))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34319412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档