2016-01-30 117 views
0

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

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 

回答

4

request.POST为形式编码的数据。你有JSON;您应该访问request.body并通过json.loads将其反序列化。

+0

完美替代

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

........ :-) –

+0

'而真:pass' :) – dsgdfg

+0

@Daniel只是一个小问题。它显示'视图没有返回一个HttpResponse对象',我不希望我的视图返回任何响应。它只是改变我的分贝。有什么办法可以解决这个问题吗? –

0

只需使用

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