Django 序列化

序列化

因为json只能处理简单的python数据类型,例如 字典、列表、元组、字符串等。

普通请求 -> render渲染
Ajax -> render生成局部HTML ***局部数据:应用单一
Ajax -> HttpResponse('数据') ***接口API:为别人提供数据***



render和HttpResponse的关系?

render:
a. 模板+数据进行替换
b. HttpResponse(数据)

HttpResponse:
a. HttpResponse(数据)
2. Ajax请求时,响应内容只能用HttpResponse吗?

 

# Models获取数据时,序列化方式一(不常用)

from django.core import serializers
user_list = models.UserInfo.objects.all()
data = serializers.serialize("json", user_list)

 

# Models获取数据时,序列化方式二(推荐使用)

user_list = models.UserInfo.objects.values('id','username')
user_list = list(user_list)
import json
return HttpResponse(json.dumps(user_list))

 

# Models获取数据时,序列化方式三(不常用)

user_list = models.UserInfo.objects.values_list('id', 'username')
user_list = list(user_list)
import json
return HttpResponse(json.dumps(user_list))

 

===》 Django中Ajax方式获取ORM获取数据数据时,涉及序列化操作

定义标准化的Response类

class BaseReponse:
    def __init__(self):
        self.status = False
        self.data = None
        self.error = None

View逻辑

import json
import baseresponse

response = BaseResponse()
try:
    user_list = models.UserInfo.objects.values('id','urname')
    user_list = list(user_list)
    response.status = True
    response.data = user_list
except Exception as e:
    response.error = "获取数据失败"
data = json.dumps(response.__dict__)
return HttpResponse(data)

 

 

 

posted @ 2017-06-03 22:20  Vincen_shen  阅读(161)  评论(0)    收藏  举报