2016-10-17 48 views
0

我张贴从智能手机的评论使得Web服务,下面是我的代码没有JSON对象可以被解码 - Django的request.body

@api_view(['POST']) 
def comment_post(request,newsId=None): 
    data = json.loads(request.body) 
    responseData= dict({ 
     "result": list() 
     }) 
    if(newsId): 
     commentNews = models.Comments.objects.create() 
     commentNews.comment_description = data.get('comment_description').strip() 
     commentNews.like_count = int(data.get('like_count')) 
     commentNews.user_name = data.get('user_name').strip() 
     commentNews.user_email_id = data.get('user_email_id').strip() 
     commentNews.parent_comment = data.get('parent_comment').strip() 
     commentNews.save() 
     subscribed_user = models.SubscribedUsers.objects.create(username=data.get('user_name').strip(),email=data.get('user_email_id').strip()) 
     news = models.News.objects.get(id=int(newsId)) 
     news.comments.add(commentNews) 
     data ={ 
     'status':'success' 
     } 
    else: 
     data ={ 
     'status':'failure' 
     } 
    responseData['result'].append(data) 
    return Response(responseData,status=status.HTTP_200_OK) 

每当我检查,对本地IT工作,但在服务器端它给了我下面的错误

ValueError at /service/comment_post/369 

No JSON object could be decoded 

Request Method:  POST 
Request URL: http://dev.newskhabari.com/service/comment_post/369 
Django Version:  1.9.5 
Exception Type:  ValueError 
Exception Value:  

No JSON object could be decoded 

Exception Location:  /usr/local/lib/python2.7/json/decoder.py in raw_decode, line 383 
Python Executable: /var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/bin/python 
Python Version:  2.7.6 
Python Path:  

['/var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/lib/python2.7/site-packages', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/lib/python2.7/site-packages/django', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/bin', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev', 
'/usr/local/rvm/gems/ruby-2.2.2/gems/passenger-5.0.30/src/helper-scripts', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/lib/python27.zip', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/lib/python2.7', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/lib/python2.7/plat-linux2', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/lib/python2.7/lib-tk', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/lib/python2.7/lib-old', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7', 
'/usr/local/lib/python2.7/plat-linux2', 
'/usr/local/lib/python2.7/lib-tk', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev/newskhabari-app-venv/lib/python2.7/site-packages', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev', 
'/var/www/vhosts/newskhabari.com/newskhabari_dev/app'] 

Server time: Mon, 17 Oct 2016 11:35:36 +0530 

我无法弄清楚它为什么给 异常值:无JSON对象可以解码

+0

我觉得你没有做json.loads BCZ在休息的框架,你可以通过访问request.data以JSON格式。尝试 –

回答

0

我猜想,您正在使用django-rest-framework。所以,你不必做json.loads(),becasue django-rest-framework提供request.dataPOST请求和request.query_paramsGET请求,JSON格式已经被解析。

所以我认为这应该适合你。

@api_view(['POST']) 
def comment_post(request,newsId=None): 
responseData= dict({ 
    "result": list() 
    }) 
if(newsId): 
    commentNews = models.Comments.objects.create() 
    commentNews.comment_description = request.data.get('comment_description').strip() 
    commentNews.like_count = int(request.data.get('like_count')) 
    commentNews.user_name = request.data.get('user_name').strip() 
    commentNews.user_email_id = request.data.get('user_email_id').strip() 
    commentNews.parent_comment = request.data.get('parent_comment').strip() 
    commentNews.save() 
    subscribed_user = models.SubscribedUsers.objects.create(username=request.data.get('user_name').strip(),email=request.data.get('user_email_id').strip()) 
    news = models.News.objects.get(id=int(newsId)) 
    news.comments.add(commentNews) 
    data ={ 
    'status':'success' 
    } 
else: 
    data ={ 
    'status':'failure' 
    } 
responseData['result'].append(data) 
return Response(responseData,status=status.HTTP_200_OK) 

如需进一步信息读取的docs here

+0

它适用于本地,但每当我发布它在服务器上它不工作。 – Teekam

+0

它工作吗? @Teekam –

+0

它给出了任何错误? @Teekam –

相关问题