【问题标题】:Django POST method errorDjango POST 方法错误
【发布时间】:2016-03-13 17:36:02
【问题描述】:

我的 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']}

而且,我不知道为什么。 有人能帮我吗?也许有人知道,如何解决这个问题

【问题讨论】:

  • 你想用这个达到什么目的?
  • 我想要第一个字典

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


【解决方案1】:

在请求中,您需要使用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

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 2019-07-05
    • 2019-02-26
    • 2019-10-22
    • 2021-09-07
    • 2022-08-03
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    相关资源
    最近更新 更多