python - Django POST 方法错误

标签 python django server django-rest-framework python-requests

我的 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/

相关文章:

python - Django REST : Serializer lookup by UUID

ios - 有什么办法可以为iOS的通用链接添加userInfo吗?

java - Java Web套接字服务器

python - 在 Django 模板中显示 view.py 中的 url 变量

python - 匹配 Pandas 中的元组和数据处理

python - 包含具有游程长度和频率约束的二进制值的 python 列表的伪随机生成

python - 使用 Scapy 提取 TCP 数据

django - 不同型号共用一个ID列表

python - Django:按 child 的属性排序对象

javascript - 使用 PM2 [ Node ] 进行日志管理