django序列化
来源:互联网 发布:淘宝主播怎么申请 编辑:程序博客网 时间:2024/05/13 08:59
json序列化
可以通过模板语言
也可以通过ajax 序列化传送到前端
models内容:
from django.db import models# Create your models here.class UserInfo(models.Model): username=models.CharField(max_length=32) password=models.CharField(max_length=64)
urls
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^users.html$',views.users), url(r'^get_users.html$', views.get_users),
views所做的操作内容:
from app01 import modelsdef users(request): # user_list=models.UserInfo.objects.all() # return render(request,'users.html',{'user_list':user_list}) return render(request, 'users.html')def get_users(request): response = {'status': True, 'data': None, 'msg': None} try: # queryset类型[obj,obj] # django的序列号方法 # user_list = models.UserInfo.objects.all() # data = serializers.serialize('json', user_list) # json序列号方法 user_list = models.UserInfo.objects.values('id', 'username') response['data'] = list(user_list) # queryset转换为list except Exception as e: response['status']=False response['msg']= str(e) data = json.dumps(response) return HttpResponse(data)
页面: users.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body>{# <ul>#}{# {% for row in user_list %}#}{# <li>{{ row.username }}</li>#}{##}{# {% endfor %}#}{# </ul>#}<ul id="user_list_id"></ul><script src="/static/jquery-3.1.1.js"></script><script> $(function () { initData(); }); function initData() { $.ajax({ url: '/get_users.html', type: 'GET', {# 方法一 指定类型#} dataType: 'JSON', success: function (arg) { {# arg = JSON.parse(arg); 方法二 手动转换一下类型#} if (arg.status){ $.each(arg.data,function (index,row) { console.log(index,row); console.log(row.id,row.username); //var tag=document.createElement('li'); var tag='<li>'+row.username+'</li>'; $('#user_list_id').append(tag); }) }else { alert(arg.msg); } console.log(arg); } }) }</script></body></html>
定制:
2. 序列化
方式一:
user_list = models.UserInfo.objects.all()
data = serializers.serialize("json", user_list)
[
{"model": "app01.userinfo", "pk": 1, "fields": {"username": "\u5174\u666e", "password": "123123"}},
{"model": "app01.userinfo", "pk": 2, "fields": {"username": "\u94f6\u79cb\u826f", "password": "666"}}
]
方式二:
user_list = models.UserInfo.objects.values('id','username')
user_list = list(user_list)
data = json.dumps(user_list)
[
{"username": "\u5174\u666e", "id": 1},
{"username": "\u94f6\u79cb\u826f", "id": 2}
]
问题:对json.dumps做定制:
import json
from datetime import date
from datetime import datetime
class JsonCustomEncoder(json.JSONEncoder):
def default(self, field):
if isinstance(field, datetime):
return field.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(field, date):
return field.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self, field)
user_list = [
{'id':1,'name':'alex','ctime': datetime.now()},
{'id':2,'name':'eric','ctime': datetime.now()}
]
data = json.dumps(user_list,cls=JsonCustomEncoder)
print(data)
总结:
- 模板渲染
- Ajax
- json序列化
- 前端:js添加到页面
- Django 序列化
- Django中的序列化
- django序列化
- django--缓存,序列化,信号
- Django,再谈json序列化
- Django--缓存与序列化
- Django 序列化与反序列化
- django-rest-framework指南(1):序列化
- Django REST framework教程一:序列化
- django对象的序列化,转换json
- django 数据序列化的实现
- Django框架全面讲解 -- 序列化
- Django REST framework 序列化与反序列化
- django rest framework 入门1-序列化 Serialization
- django rest framework 入门1-序列化 Serialization
- django rest framework 入门1-序列化 Serialization
- Django-Rest-Framework 教程: 1. 序列化 (Serialization)
- django rest framework 入门1-序列化 Serialization
- C++ 模板
- eclipse项目中package显白色,未包含在项目中
- Spark操作数据库
- 第45天 Nginx服务器设置
- 逻辑锻炼 : 经典问题
- django序列化
- java中内存详解(int Integer double)
- 面试整理-Java综合高级篇
- 输入三个整数按大小顺序交换换输出
- 配置IP
- Hyperledger fabric V1.0 架构解析
- WD
- 数据库操作类简单再优化
- Recursion