Django Tastypie通过PostMan REST客户端与API交互

Chr*_*ose 5 django rest json

我试图在tastypie Api中创建一个Login模块,当使用Postman REST客户端测试它时出错.

Method : POST
format : application/json
content type : json

raw data:  {
             'type': 'login',
             'username': 'username',
             'password': 'password'
            }



def login(self, request, **kwargs):
    self.method_check(request, allowed=['post'])

    data = self.deserialize(request, request.raw_post_data, format=request.META.get('CONTENT_TYPE', 'application/json'))

    username = data.get('username', '')
    password = data.get('password', '')

    user = authenticate(username=username, password=password)
    if user:
        if user.is_active:
            login(request, user)
            return self.create_response(request, {
                'success': True
            })
        else:
            return self.create_response(request, {
                'success': False,
                'reason': 'disabled',
                }, HttpForbidden )
    else:
        return self.create_response(request, {
            'success': False,
            'reason': 'incorrect',
            }, HttpUnauthorized )
Run Code Online (Sandbox Code Playgroud)

邮差中的错误信息

{"error_message":"期望属性名称:第1行第1列(字符1)","追溯":"追溯(最近一次调用最后一次):\n \n文件\"/ home/sayon​​e/virtuals/pharma/local /lib/python2.7/site-packages/tastypie/resources.py \",第178行,在包装器中\n response = callback(request,*args,**kwargs)\n \n File \"/ home/sayon​​e /virtuals/pharma/local/lib/python2.7/site-packages/tastypie/resources.py \",第379行,在dispatch_list \n中返回self.dispatch('list',request,**kwargs)\n \n文件\"/ home/sayon​​e/virtuals/pharma/local/lib/python2.7/site-packages/tastypie/resources.py \",第409行,在dispatch \n response = method(request,**kwargs) \n \n文件\"/ home/sayon​​e/virtuals/pharma/local/lib/python2.7/site-packages/tastypie/resources.py \",第1077行,在post_list \n deserialized = self.deserialize(request,request.raw_post_data,format = request.META.get('CONTENT_TYPE','application/json'))\n \n File \"/ home/sayon​​e/virtuals/pharma /local/lib/python2.7/site-packages/tastypie/resources.py \",第328行,反序列化\n deserialized = self._meta.serializer.deserialize(data,format = request.META.get('CONTENT_TYPE ','application/json'))\n \n File \"/ home/sayon​​e/virtuals/pharma/local/lib/python2.7/site-packages/tastypie/serializers.py \",第157行,反序列化\n deserialized = getattr(self,\"from_%s \"%desired_format)(内容)\n \n文件\"/ home/sayon​​e/virtuals/pharma/local/lib/python2.7/site-packages/tastypie /serializers.py \",第301行,在from_json \n中返回simplejson.加载(内容)\n \n文件\"/ usr/lib/python2.7/json /init .py \",第326行,在loads \n中
返回_default_decoder.decode(s)\n \n File \"/ usr/lib/python2.7/json/decoder.py \",第366行,在解码\n obj,end = self.raw_decode(s,idx = _w(s,0).end())\n \n File \"/ usr/lib/python2.7/json/decoder.py \",第382行,在raw_decode \n
obj中,end = self.scan_once(s,idx)\n \nValueError:期望属性名称:第1行第1列(字符1)\n"}

Sat*_*yur 6

用双引号替换单引号ex:

 {"type":"login","username":"username", "password":"password" }
Run Code Online (Sandbox Code Playgroud)