使用相同的命令时使用shell创建对象,但是当我使用Angular从另一个端口发布数据时,不会创建对象。我没有得到任何错误。我也尝试过手动赋值。
def insertCompany_type(request, *args, **kwargs):
if request.is_ajax() and request.method == 'POST':
data = json.loads(request.body)
c_type = data["subject"]
user = request.user
Company_Type.objects.create(user=user, type=c_type)
return HttpResponse('ok')
答案 0 :(得分:3)
您应该使用Chrome开发工具之类的工具。请参阅标签"网络"在里面。您还应该在代码中使用装饰器csrf_exempt
。最后,您需要检查用户的原始数据。
@csrf_exempt
def insertCompany_type(request, *args, **kwargs):
if request.is_ajax() and request.method == 'POST':
data = json.loads(request.body)
c_type = data["subject"]
user = request.user
Company_Type.objects.create(user = user,type = c_type)
return JsonResponse({'status': 'ok'})
return JsonResponse({'status': 'error'})
<强>更新即可。是的我同意。 csrf_exempt是个坏主意。最好在客户端的请求中添加标头,如:
angular
.module('thinkster')
.run(run);
run.$inject = ['$http'];
/**
* @name run
* @desc Update xsrf $http headers to align with Django's defaults
*/
function run($http) {
$http.defaults.xsrfHeaderName = 'X-CSRFToken';
$http.defaults.xsrfCookieName = 'csrftoken';
}
完整版本为here