Django 之 JsonResponse 对象

JsonResponse 是 HttpResponse 的子类,与父类的区别在于:

  • JsonResponse 默认 Content-Type 类型为 application/json
  • HttpResponse 默认为 application/text
class JsonResponse(HttpResponse):

    def __init__(self, data, encoder=DjangoJSONEncoder, safe=True,
                    json_dumps_params=None, **kwargs):

HttpResponse

HttpResponse 每次将数据返回给前端需要用 json 模块序列化,且前端也要反序列化:

# views.py

import json

def index(request):
    message = '请求成功'
    # ret = {'message': '请求成功'}
    return HttpResponse(json.dumps(message))    # 序列化

# index.html
$.ajax({
    url: '/accounts/ajax/',
    type: 'post',
    data: {
        'p': 123,
        csrfmiddlewaretoken: '{{ csrf_token }}'
    },
    # 反序列化,或使用 json.parse(arg)
    dataType: "JSON",
    success: function (arg) {
        console.log(arg.message);
    }
})


JsonResponse

JsonResponse 只能序列化字典格式,不能序列化字符串,且前端不用反序列化:

from django.http import JsonResponse

def index(request):

    ret = {'message': '请求成功'}
    return JsonResponse(ret)    # 序列化

# index.html
$.ajax({
    url: '/accounts/ajax/',
    type: 'post',
    data: {
        'p': 123,
        csrfmiddlewaretoken: '{{ csrf_token }}'
    },
    # 不需要反序列化
    # dataType: "JSON",
    success: function (arg) {
        console.log(arg.message);       # 请求成功
    }
})

总结

  • HTTPResponse 后端要用 json 模块序列化,前端也要反序列化。
  • JSonResponse 前端不用反序列化,只能传输字典,不能传输字符串。

原文地址:https://www.cnblogs.com/midworld/p/10991994.html

时间: 2024-10-11 17:25:47

Django 之 JsonResponse 对象的相关文章

Django之JsonResponse

JsonResponse 对象: class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None,**kwargs) 这个类是HttpRespon的子类,它主要和父类的区别在于: 1.它的默认Content-Type 被设置为: application/json 2.第一个参数,data应该是一个字典类型,当 safe 这个参数被设置为:False ,那data可以填入任何能被转换为JSO

django的request对象和response对象

概述Django 使用 request 和 response 对象表示系统状态数据..当请求一个页面时,Django创建一个 HttpRequest 对象.该对象包含 request 的元数据. 然后 Django 调用相应的 view 函数(HttpRequest 对象自动传递给该view函数<作为第一个参数>), 每一个 view 负责返回一个 HttpResponse 对象. 本文档解释了 HttpRequest 和 HttpResponse 对象的 API.HttpRequest 对象

Django 之 JsonResponse使用方法

JsonResponse作用:通常用于捡写API接口时,各个业务系统之间数据传递所使用 代码 class Json(View): def get(self,request): #get方法 data={"name":"kang","age":18} from django.http import JsonResponse #导入django的JsonResponse方法 return JsonResponse(data) #返回一个字典格式给浏览

Django HttpResponse与JsonResponse对象

一:HttpResponse对象介绍 前面一节课讲到的HttpRequest用于接受客户端发送到服务器的内容,封装成一个HttpRequest对象: 那么服务器视图函数在处理相关逻辑后,也需要返回给我们的客户端. HttpResponseBase或者它的子类就是返回给客户端的对象:而HttpResponse则是HttpResponseBase用得最多的子类: 二:HttpResponse常用属性 1. content:返回的内容. 2. status_code:返回的HTTP响应状态码. 3.

django的HTTPREQUEST对象

Django使用request和response对象 当请求一张页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把这个HttpRequest 对象作为第一个参数传给view方法.任何view方法都应该返回一个HttpResponse对象. 我们在本书中大量使用这两个对象:本附录详细解释HttpRequest和HttpResponse对象. HttpRequest HttpRequest代表一个来自uesr-agent的

django的HttpResponse对象

服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好的对象就可以.视图的第一个参数必须是HttpRequest对象,在django.http模块中定义了HttpRequest对象的API 属性 下面除非特别说明,属性都是只读的. path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分. method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'.'POST'. 在浏览器中给出地址发出请求采用get

Django自定义查询对象

在Django中,objects对象类继承于models.Manager 1.声明 EntryManager 类,继承自 models.Manager 允许在 EntryManager中增加自定义函数 class EntryManager(models.Manager): def 函数名(self,自定义参数): .... .... return ... 2.使用EntryManager对象覆盖Models类中原有的objects class Entry(models.Model): objec

django框架-request对象

HTTP 应用的信息是通过 请求报文 和 响应报文 传递的,关于更多的相关知识,可以阅读<HTTP权威指南>获得. 其中 请求报文 由客户端发送,其中包含和许多的信息,而 django 将这些信息封装成了 HttpRequest 对象,该对象由 HttpRequest 类创建.每一个请求都会生成一个 HttpRequest 对象,django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象. 例如: def index(request): ..

Django之ORM对象关系模型

MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是“对象-关系-映射”的简称.(Object Relational Mapping,简称ORM)(将来会学一个sqlalchemy,是和他很像的,但是django的orm没有独立出来让别人去使用,虽然功能比sqlalchemy更强大,但是别人用不了) 在使用