我的 Django 项目出现一些错误。
所以,我使用 Django Rest Framework
class CompaniesInviteView(APIView):
def get(self, request, pk=None):
return Response({}, status=status.HTTP_204_NO_CONTENT)
def post(self, request, pk=None, **kwargs):
print request.POST
网址:
from django.conf.urls import patterns, url, include
from views import *
urlpatterns = patterns(
'',
url(r'^(?P<pk>\d+)/invite/?$', CompaniesInviteView.as_view(), name='companies'),
)
并且,当我发送 POST 请求时:
import requests
r = requests.Session()
data = {
"users": [
{
"first_name": "1",
"last_name": "1",
"email": "123@12.eu",
"password1": "123",
"password2": "123"
},
{
"first_name": "12",
"last_name": "12",
"email": "1234@12.eu",
"password1": "123",
"password2": "123" }
]
}
print data
reg = r.post('http://localhost:8000/api/companies/15/invite', data=data)
Django 说我:
<QueryDict: {u'users': [u'password1', u'first_name', u'last_name', u'email', u'password2', u'password1', u'first_name', u'last_name', u'email', u'password2']}>
2015-12-08 18:09:31,393 DEBUG fus.utils params (101) GET: <QueryDict: {}>
2015-12-08 18:09:31,393 DEBUG fus.utils params (102) POST: <QueryDict: {u'users': [u'password1', u'first_name', u'last_name', u'email', u'password2', u'password1', u'first_name', u'last_name', u'email', u'password2']}>
所以我发送
{
"users": [
{
"first_name": "1",
"last_name": "1",
"email": "123@12.eu",
"password1": "123",
"password2": "123"
},
{
"first_name": "12",
"last_name": "12",
"email": "1234@12.eu",
"password1": "123",
"password2": "123" }
]
}
我明白了
{u'users': [u'password1', u'first_name', u'last_name', u'email', u'password2', u'password1', u'first_name', u'last_name', u'email', u'password2']}
而且,我不知道为什么。 有人能帮我吗?也许有人知道,如何解决这个问题
最佳答案
在请求中,您需要使用 json
而不是 data
,例如:
reg = r.post('http://localhost:8000/api/companies/15/invite', json=data)
要访问发布数据,您应该使用request.data
class CompaniesInviteView(APIView):
def get(self, request, pk=None):
return Response({}, status=status.HTTP_204_NO_CONTENT)
def post(self, request, pk=None, **kwargs):
print request.data
关于python - Django POST 方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34161991/