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)