Django 返回數據 到ajax


Djnago中,HttpResponse 和JsonResponse,返回后直接取值

1.返回字符串

正常使用HttpResponse返回字符串就好

2.視圖函數響應JSON數據類型:

  • 使用HttpResponse響應手動序列化后JSON數據直接響應,前端得到的響應數據需要被動反序列化成對應的數據類型
  • 使用HttpResponse響應手動序列化后JSON數據並設置參數content_type='application/json'前端得到的響應數據是經過JSON對象自動進行反序列化后的對應數據類型
  • 使用HttpResponse響應不需要手動序列化JSON數據,直接響應即可,但是對於非字典類型的數據類型需要設置參數safe=False前端得到的響應數據是經過JSON對象自動進行反序列化后的對應數據類型 

①使用HttpResponse響應:未告知類型,前端需要被動解析

視圖函數:

data={'status':[1,2,3],'info':'login'}

return HttpResponse(json.dumps(data))#直接發送json字典,前端需要被動反序列化

AJAX回調函數:

success: function (response) {//請求回調函數參數response被動反序列化

    console.log(JSON.parse(response));

    console.log(typeof JSON.parse(response));

②使用HttpResponse響應,告知類型,前段自動調用JSON對象解析

視圖函數:

data={'status':[1,2,3],'info':'login'}

return HttpResponse(json.dumps(data),content_type='application/json')#發送json字典,告知類型

return HttpResponse(json.dumps(ret,ensure_ascii=False)) #ensure_ascii=False是告訴json不要對中文進行編碼,不然返回給前端的數據中如果有中文的話會被編碼成unicode類型的數據,導致前端看不到中文

AJAX回調函數:

success: function (response) {//請求回調函數參數response自動反序列化

    console.log(response);

    console.log(typeof response); 

使用JsonResponse響應,不需要手動進行序列化,同時也不需要告知類型,在響應除字典以外的數據類型時,需要添加參數safe=False

from  django.http  import  JsonResponse

響應字典視圖函數:

data={'status':[1,2,3],'info':'login'}

return JsonResponse(data)#使用JsonResponse,直接響應數據

響應非字典視圖函數:

data=[{'status':[1,2,3],'info':'login'}]

return JsonResponse(data,safe=False)#使用JsonResponse,直接相應數據,字典以外數據類型徐設置參數safe=False

AJAX回調函數:

success: function (response) {//請求回調函數參數response自動反序列化

    console.log(response);

    console.log(typeof response);

  • 添加到短語集
     
    • 沒有此單詞集:加利西亞語 → 中文(簡體)...
       
    • 創建新的單詞集...
  • 拷貝
  • 添加到短語集
     
    • 沒有此單詞集:英語 → 中文(簡體)...
       
    • 創建新的單詞集...
  • 拷貝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM