Django POST方法无法从ajax请求中获取数据

时间:2016-01-30 14:21:06

标签: python django

我试图使用我的视图类从ajax请求中获取数据。 BUt打印Query dict,我得到一个空字典..我已经添加了与csrf相关的代码。

ajax请求,

$.ajax({
    type: "POST",
    url: "/categories/",
    contentType: 'application/json',
    data: JSON.stringify({"category_id": id, "category_name": name}),
    success: function(data) {
      $('#category-modal').modal('toggle');
    }

urls.py

  urlpatterns = [
    url(r'^categories/', CategoryView.as_view(), name='Categories'),
     ]

views.py

class CategoryView(TemplateView):
    template_name = 'categories.html'

    def get(self, request, *args, **kwargs):
        items = CategoryQuery.get_all_categories()

        context = {
            'items': items,
        }
        return self.render_to_response(context)

    def post(self, request, *args, **kwargs):
        query_dict = request.POST
        converted_dict = query_dict.dict()
        print converted_dict

2 个答案:

答案 0 :(得分:4)

request.POST用于表单编码数据。你有JSON;您应该访问request.body并通过json.loads对其进行反序列化。

答案 1 :(得分:0)

简单地替换

data: JSON.stringify({"category_id": id, "category_name": name}),

data: {"category_id": id, "category_name": name}