序列化是將對象狀態轉換爲可保持或傳輸的格式的過程html
反序列化是指將存儲在存儲媒體中的對象狀態裝換成對象的過程 python
例如遊戲都有存檔的功能、再次開始的時候只需讀檔便可(這便是一個序列化與反序列的過程)jquery
序列化也能夠將一個對象傳遞到另外一個地方的ajax
關於Django中的序列化主要應用在將數據庫中檢索的數據返回給客戶端用戶,特別的Ajax請求通常返回的爲Json格式。數據庫
一、serializersdjango
用於序列化QuerySet中的對象json
from django.core import serializers ret = models.BookType.objects.all() data = serializers.serialize("json", ret)
二、json.dumps數組
import json #ret = models.BookType.objects.all().values('caption') ret = models.BookType.objects.all().values_list('caption') ret=list(ret) result = json.dumps(ret)
另外也能夠用JsonResponse傳遞一個數組或字典到網頁,由JS處理,再顯示出來。app
views.pyspa
from django.http import HttpResponse import json def ajax_list(request): a = range(100) return HttpResponse(json.dumps(a), content_type='application/json') def ajax_dict(request): name_dict = {'twz': 'Love python and Django', 'zqxt': 'I am teaching Django'} return HttpResponse(json.dumps(name_dict), content_type='application/json')
from django.http import JsonResponse def ajax_list(request): a = range(100) return JsonResponse(a, safe=False) def ajax_dict(request): name_dict = {'twz': 'Love python and Django', 'zqxt': 'I am teaching Django'} return JsonResponse(name_dict)
index.html
<!DOCTYPE html> <html> <body> <p>請輸入兩個數字</p> <form action="/add/" method="get"> a: <input type="text" id="a" name="a"> <br> b: <input type="text" id="b" name="b"> <br> <p>result: <span id='result'></span></p> <button type="button" id='sum'>提交</button> </form> <div id="dict">Ajax 加載字典</div> <p id="dict_result"></p> <div id="list">Ajax 加載列表</div> <p id="list_result"></p> <script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.min.js"></script> <script> $(document).ready(function(){ // 求和 a + b $("#sum").click(function(){ var a = $("#a").val(); var b = $("#b").val(); $.get("/add/",{'a':a,'b':b}, function(ret){ $('#result').html(ret); }) }); // 列表 list $('#list').click(function(){ $.getJSON('/ajax_list/',function(ret){ //返回值 ret 在這裏是一個列表 for (var i = ret.length - 1; i >= 0; i--) { // 把 ret 的每一項顯示在網頁上 $('#list_result').append(' ' + ret[i]) }; }) }) // 字典 dict $('#dict').click(function(){ $.getJSON('/ajax_dict/',function(ret){ //返回值 ret 在這裏是一個字典 $('#dict_result').append(ret.twz + '<br>'); // 也能夠用 ret['twz'] }) }) }); </script> </body> </html>