在django模型中存储ajax发布数据

时间:2015-12-14 11:43:40

标签: angularjs django

使用相同的命令时使用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')

1 个答案:

答案 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