我可以在我的終端(本地測試)看到「發佈」正在發生。但數據從未到達。在瀏覽器中,它告訴給我一個200,但是響應是我的異常錯誤(「不工作」)。HTTP Post給200,但沒有數據到達。異常處理
我怎樣才能得到數據到我的數據庫實際上後?或者請提出一些錯誤/異常處理來嘗試解決本地問題。
測試時,這工作得很好:
import requests
r = requests.post('http://localhost:8000/api/item/291/', {'uid':21, 'click':1, 'like':1, 'image':0, 'scroll':1, 'clickbuy':0})
Rest_views.py
from rest_framework.response import Response
from rest_framework.renderers import JSONRenderer
from django.http import JsonResponse
import datetime
import json
def add_analytic(product, user, like, click, image, scroll, clickbuy):
Analytic(product=product, user=user, like=like, click=click, image=image, scroll=scroll, clickbuy=clickbuy).save()
class ProductItemView(views.ObjectGetMixin, views.BaseObjectView):
model = Product
mapper_class = mappers.ProductMapper
def post(self, request, *args, **kwargs):
try:
add_analytic(
product=Product.objects.get(pk=kwargs['pk']),
user=User.objects.get(id=request.POST['uid']),
like=int(request.POST['like']),
click=int(request.POST['click']),
image=int(request.POST['image']),
scroll=int(request.POST['scroll']),
clickbuy=int(request.POST['clickbuy']))
return JsonResponse({'IT': 'WORKED'})
except Exception:
return JsonResponse({'Result': 'Not working'})
AngularJS:
.factory('cardsApi', ['$http', function ($http) {
var like = JSON.stringify({'uid':21, 'click':1, 'like':1, 'image':0, 'scroll':1, 'clickbuy':0});
var postRecordlikes = function (product_id) {
$http({
url: ('http://localhost:8000/item/' + product_id + "/"),
dataType: 'json',
method: 'POST',
data: like,
headers: {
"Content-Type": "application/json"
}
})
}
return {
postRecordLikes: postRecordLikes,
};
}])
.controller('CardsCtrl', ['$scope', 'TDCardDelegate', 'cardsApi', '$http',
function ($scope, TDCardDelegate, cardsApi, $http) {
console.log('CARDS CTRL');
$scope.cards = []
$scope.cardSwipedRight = function (card) {
console.log('RIGHT');
postRecordLikes(card);
};
var postRecordLikes = function (product_id) {
cardsApi.postRecordLikes(product_id)
.then(function successCallback(product_id) {
}, function errorCallback(response) {
console.log(response);
});
};
}
])
和Chrome網絡檢查的結果是:
我看你不順眼傳遞變量數據,但我發現在代碼中沒有不喜歡的變量。難道它不是在這裏「喜歡」嗎? –
這是一個錯字 - 修復它。難道我需要將「views.ObjectGetMixin」更改爲「views.ObjectPostMixin」?如果是這樣,我怎麼能這樣做? – Ycon
將異常的詳細信息傳遞給響應 –