Django发送Json格式数据
2015-11-02 09:18
871 查看
转载地址:http://www.husama.com/44.html
简要
RESTful API是目前比较成熟的一套互联网应用程序的API设计理论.具体设计可以看一下 RESTful API 设计指南 by 阮一峰
Django的应用
本文讨论RESTful API的一个小应用,当Django作为类似Android,IPhone等APP的后台框架时,往往Response的不是一个Html,而是一些序列化的数据,比如Json.所以我们需要把models里的数据提取出来转化为json,虽然有基于Django的Django REST framework可以直接用,但是自己写其实也挺简单的:-)
简单的一个例子
这里我用的是python3.4和Django1.8.
models.py
12345678910 | from django.db import modelsfrom datetime import datetimeclass Article(models.Model): title = models.CharField(u'标题',max_length=256) content = models.TextField(u'内容') time = models.DateTimeField(u'发表时间', auto_now_add=True) def __str__(self): return self.title def toDict(self): return {u'标题':self.title,u'内容':self.content,u'发表时间':self.time.strftime('%Y-%m-%d %H:%M:%S')} |
views.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | fromdjango.httpimportHttpResponse importjson fromarticle.modelsimportArticle deftoDicts(objs): obj_arr=[] foroinobjs: obj_arr.append(o.toDict()) returnobj_arr defjsonAll(request): all_objs=Article.objects.all() all_dicts=toDicts(all_objs) all_jsons=json.dumps(all_dicts,ensure_ascii=False) returnHttpResponse(all_jsons) |
而json.dumps序列化的时候,加入ensure_ascii=False是为了防止编码错误,就像下面:
[{“\u5185\u5bb9”: “\u6211\u7684\u7b2c\u4e00\u4e2adjango project,\u8fd4\u56deJSON\u6570\u636e”, “\u6807\u9898”: “\u80e1\u6e58\u94ed\u7684\u6587\u7ae0″,”\u53d1\u8868\u65f6\u95f4”: “2015-10-15 10:15:41”},
{“\u5185\u5bb9”: “\u53d1\u9001\u4e86\u4e00\u7ec4json\u6570\u636e”, “\u6807\u9898”: “hello,json”,”\u53d1\u8868\u65f6\u95f4″: “2015-10-15 10:14:50”}
添加ensure_ascii=False后就正常了:
[{“标题”: “胡湘铭的文章”, “内容”: “我的第一个django project,返回JSON数据”,”发表时间”: “2015-10-15 10:15:41”}, {“标题”: “hello,json”, “内容”: “发送了一组json数据”,”发表时间”: “2015-10-15 10:14:50”}]
是不是很简单.
相关文章推荐
- js完美身份证验证
- JavaScript Length 属性的总结
- jsp小结04 - 7个动作指令01 forward
- 在线JS/CSS/HTML压缩,格式化
- SSH框架+EL表达式—jsp跨界面传值显示
- JSON格式以及基本用法
- js截取文件名
- JSP清除页面缓存常用方法小结
- JavaScript Length 属性的总结
- JS实现在状态栏显示打字效果完整实例
- JS实现网页标题栏显示当前时间和日期的完整代码
- JS实现超简单的鼠标拖动效果
- JS实现点击按钮获取页面高度的方法
- 纯javascript移动优先的幻灯片效果
- js实现文件上传表单域美化特效
- js实现动态加载脚本的方法实例汇总
- ionic调试“死亡白屏”
- JavaScript高级程序设计之DOM之节点层次之DocumentType类型第10.1.7讲
- 解决min.js文件导入myesclipse报错问题
- JavaScript高级程序设计之DOM之节点层次之CDATASection类型第10.1.6讲