标签:对象传递 rom apt 用户 pytho class orm dex 返回
序列化是将对象状态转换为可保持或传输的格式的过程
反序列化是指将存储在存储媒体中的对象状态装换成对象的过程
例如游戏都有存档的功能、再次开始的时候只需读档即可(这即是一个序列化与反序列的过程)
序列化也可以将一个对象传递到另一个地方的
关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。
1、serializers
用于序列化QuerySet中的对象
from django.core import serializers
ret = models.BookType.objects.all()
data = serializers.serialize("json", ret)
2、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处理,再显示出来。
views.py
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>
标签:对象传递 rom apt 用户 pytho class orm dex 返回
原文地址:http://www.cnblogs.com/douhaiyang/p/6602483.html