2016-01-30 119 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}