Django发送Json格式数据

转载地址: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

 

 
1
2
3
4
5
6
7
8
9
10
from django . db import models
from datetime import datetime
class 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' ) }

 

 注意这里的datatime是不可以直接使用的!

views.py

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from django . http import HttpResponse
import json   
from article . models import Article
def toDicts ( objs ) :
         obj_arr = [ ]
         foro in objs :
                 obj_arr . append ( o . toDict ( ) )
         return obj_arr          
                
def jsonAll ( request ) :
         all_objs = Article . objects . all ( )
         all_dicts = toDicts ( all_objs )
         all_jsons = json . dumps ( all_dicts , ensure_ascii = False )   
         return HttpResponse ( all_jsons )

 

 models.py中的toDict将model对象格式化成字典类型,views.py中的toDicts函数将返回字典列表.
而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”}]

是不是很简单.

程序员学习公众号:

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Django1.5中,可以使用HttpResponse对象来返回JSON格式数据。首先需要将Python字典转换为JSON字符串,然后将其作为HttpResponse对象的参数传递。 以下是一个简单的示例: ```python import json from django.http import HttpResponse def my_view(request): data = {'name': 'John', 'age': 30} json_data = json.dumps(data) return HttpResponse(json_data, content_type='application/json') ``` 在上面的示例中,我们使用json.dumps()方法将Python字典data转换为JSON字符串,然后将其传递给HttpResponse对象,并指定content_type为'application/json'。 注意:在Django1.7及以后版本中,可以使用JsonResponse对象来更方便地返回JSON格式数据。 ### 回答2: 在Django 1.5中,可以使用HttpResponse对象返回JSON格式数据。首先,你需要将你的数据转化为JSON格式,可以使用Python的json模块的dumps()函数。 示例代码如下: ``` import json from django.http import HttpResponse def my_view(request): data = { 'name': 'John', 'age': 30, 'city': 'New York' } json_data = json.dumps(data) return HttpResponse(json_data, content_type='application/json') ``` 在上面的示例中,首先导入了json模块和HttpResponse。然后,创建一个名为my_view的函数,它接收一个请求对象作为参数。 在函数中,我们创建一个包含一些数据的字典。然后,使用json.dumps()函数将字典转化为JSON格式的字符串。接下来,我们可以通过HttpResponse对象将JSON数据返回给客户端。需要注意的是,在返回响应时,我们设置了content_type参数为"application/json",以告诉浏览器返回的是JSON格式数据。 这样,当客户端发送一个请求到这个视图函数时,它将收到一个包含JSON数据的响应。 以上就是在Django 1.5中返回JSON格式数据的简单示例。当然,在实际开发中,你可能需要根据需求动态生成JSON数据,可以更加灵活地使用json.dumps()函数来转化你的数据。 ### 回答3: 在Django 1.5中,可以使用HttpResponse对象将JSON格式数据返回给客户端。 首先,需要导入json库:import json 然后,将需要返回的数据转换为JSON格式。可以使用json.dumps()函数将Python字典或列表转换为JSON字符串。例如: data = {'name': 'Alice', 'age': 25} json_data = json.dumps(data) 接下来,可以创建一个HttpResponse对象,并将JSON数据作为内容进行返回。示例代码如下: from django.http import HttpResponse def my_view(request): data = {'name': 'Alice', 'age': 25} json_data = json.dumps(data) return HttpResponse(json_data, content_type='application/json') 在上面的示例中,将JSON数据作为HttpResponse的内容,并将content_type参数设置为'application/json',以告知客户端返回的是JSON数据。 最后,将HttpResponse对象返回给客户端进行处理。 需要注意的是,这仅仅是返回了JSON格式数据,而不是在视图中处理接收到的JSON数据。如果需要在视图中接收和处理JSON数据,还需要使用request.body属性获取请求体中的原始数据,并使用json.loads()函数将JSON字符串转换为Python对象进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值