DJango休息框架createapiview

时间:2015-12-16 18:08:50

标签: python django

我使用Django rest框架CreateAPIView来创建一些数据,这里是视图。

class CompanyCreateApiView(CreateAPIView):

    def post(self, request, *args, **kwargs):
        print 'request ==', request
        for each in args:
            print 'args ==', each
        for each in kwargs:
            print 'keargs ==', each
        import json
        data=json.dumps({'status':'success'})
        return Response(data, status=status.HTTP_200_OK)

现在我使用python请求模块调用此视图集,并且看不到以* Args或** kwargs参数打印的帖子数据

**

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

**

2 个答案:

答案 0 :(得分:2)

你不会在那些中看到任何POST数据;相反,你会在request.data中看到它。如django-rest-framework documentation

中所述
  

request.data返回请求正文的已解析内容。这类似于标准的request.POST和request.FILES属性,除了:

     
      
  • 它包括所有已解析的内容,包括文件和非文件输入。
  •   
  • 它支持解析POST以外的HTTP方法的内容,这意味着您可以访问PUT和PATCH请求的内容。
  •   
  • 它支持REST框架的灵活请求解析,而不仅仅是支持表单数据。例如,您可以像处理传入表单数据一样处理传入的JSON数据。
  •   

答案 1 :(得分:0)

您没有看到任何回复,因为它们是空的,就像

for item in []:
   print item

它不能迭代空数据,但是如果你在url中发送一个值:

url(r'^/api/create-company-profile/(?P<name>\w+)/$', CompanyCreateApiView.as_view()),

kwargs将具有以下值{"name": comany_name}

为了检索您使用request.data的请求正文中发送的数据,您可能还会在互联网上找到一些示例,例如request.DATArequest.QUERY_PARAMS,但不推荐使用在较新版本的django中,由request.data

取代