我使用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
**
答案 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.DATA
或request.QUERY_PARAMS
,但不推荐使用在较新版本的django中,由request.data