Stanislav Filin
Stanislav Filin

Reputation: 124

Django POST method error

I have some mistake error with my Django Project.

So, i'm use 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

Urls:

from django.conf.urls import patterns, url, include

from views import *

urlpatterns = patterns(
    '',
    url(r'^(?P<pk>\d+)/invite/?$', CompaniesInviteView.as_view(), name='companies'),

)

And, when i'm send POST request:

import requests

r = requests.Session()

data = {
    "users": [
        {
          "first_name": "1",
          "last_name": "1",
          "email": "[email protected]",
          "password1": "123",
          "password2": "123"
        },
        {
          "first_name": "12",
          "last_name": "12",
          "email": "[email protected]",
          "password1": "123",
          "password2": "123" }
    ]
}
print data
reg = r.post('http://localhost:8000/api/companies/15/invite', data=data)

Django say me:

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

So i'm send

{
        "users": [
            {
              "first_name": "1",
              "last_name": "1",
              "email": "[email protected]",
              "password1": "123",
              "password2": "123"
            },
            {
              "first_name": "12",
              "last_name": "12",
              "email": "[email protected]",
              "password1": "123",
              "password2": "123" }
        ]
    }

I'm get

{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']}

And, i don't know why. Can someone help me? Maybe someone know, how fix this

Upvotes: 1

Views: 611

Answers (1)

Anush Devendra
Anush Devendra

Reputation: 5475

In requests you need to use json instead of data like:

reg = r.post('http://localhost:8000/api/companies/15/invite', json=data)

and to access the post data you should use 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

Upvotes: 1

Related Questions