HttpCanary教程_jquery post json

HttpCanary教程_jquery post jsonHttpResponse对象Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返回一个响

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

HttpResponse对象

Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返回一个响应给浏览器。而这个响应,我们必须返回HttpResponseBase或者他的子类的对象。而HttpResponse则是HttpResponseBase用得最多的子类。那么接下来就来介绍一下HttpResponse及其子类。
 

常用属性

  • content:返回的内容。
  • status_code:返回的HTTP响应状态码。
  • content_type:返回的数据的MIME类型,默认为text/html。浏览器会根据这个属性,来显示数据。如果是text/html,那么就会解析这个字符串,如果text/plain,那么就会显示一个纯文本。常用的Content-Type如下:
    • text/html(默认的,html文件)
    • text/plain(纯文本)
    • text/css(css文件)
    • text/javascript(js文件)
    • multipart/form-data(文件提交)
    • application/json(json传输)
    • application/xml(xml文件)
  • 设置请求头:response['X-Access-Token'] = 'xxxx'
     

常用方法

  • set_cookie:用来设置cookie信息。
  • delete_cookie:用来删除cookie信息。
  • write:HttpResponse是一个类似于文件的对象,可以用来写入数据到数据体(content)中。
     

JsonResponse类

用来将对象dumpjson字符串,然后返回将json字符串封装成Response对象返回给浏览器。并且他的Content-Typeapplication/json。示例代码如下:

from django.http import JsonResponse
def index(request):
    return JsonResponse({"username":"jkc","age":18})

默认情况下JsonResponse只能对字典进行dump,如果想要对非字典的数据进行dump,那么需要给JsonResponse传递一个safe=False参数。示例代码如下:

def index(request):
    list1 = [
        {"username": "jkc", "age": 18},
        {"username": "a", "age": 20},
        {"username": "b", "age": 22},
    ]
    return JsonResponse(list1, safe=False)

上述代码我们定义了一个列表,当我们想要把非字典格式的数据进行dump,那么就需要添加参数safe=False
 

JsonResponse类源码分析

class JsonResponse(HttpResponse):
    """
    An HTTP response class that consumes data to be serialized to JSON.

    :param data: Data to be dumped into json. By default only ``dict`` objects
      are allowed to be passed due to a security flaw before EcmaScript 5. See
      the ``safe`` parameter for more information.
    :param encoder: Should be a json encoder class. Defaults to
      ``django.core.serializers.json.DjangoJSONEncoder``.
    :param safe: Controls if only ``dict`` objects may be serialized. Defaults
      to ``True``.
    :param json_dumps_params: A dictionary of kwargs passed to json.dumps().
    """

    def __init__(self, data, encoder=DjangoJSONEncoder, safe=True,
                 json_dumps_params=None, **kwargs):
        if safe and not isinstance(data, dict):
            raise TypeError(
                'In order to allow non-dict objects to be serialized set the '
                'safe parameter to False.'
            )
        if json_dumps_params is None:
            json_dumps_params = {}
        kwargs.setdefault('content_type', 'application/json')
        data = json.dumps(data, cls=encoder, **json_dumps_params)
        super().__init__(content=data, **kwargs)

我们可以看到JsonResponse是继承于HttpResponse,写了一个初始化方法,方法中有5个参数

  • data:需要转换的数据
  • encoder:json编码器
  • safe:控制是否只有dict对象可以序列化,默认为True
  • json_dumps_params:字典通过json.dumps()转化

中间代码的翻译是:如果safe设置为True并且data的数据类型不是dict,那么抛出一个TypeError类型错误,如果json_dumps_paramsNonekwargs设定一个默认值content_type='application/json',规定了返回的是json格式,最后把字典格式的数据转换成json格式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166158.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 算法帝国:华尔街交易怪兽的核武器缔造史

    算法帝国:华尔街交易怪兽的核武器缔造史这是一段通俗的读物,更是一段算法交易的历史钩沉,华尔街的每个角落逐渐被算法所侵蚀,思考者,依然还是拖着额头,但却不得不接受未来的现实!1980年华尔街的黑客生涯:天时地利20世纪70年代末期,算法开始进入人们的工作,这一趋势席卷了世界各地的金融市场,标志着华尔街黑客时代已然来临。华尔街逐渐吸引了美国越来越多杰出的数学家和科学家投身于编写交易算法的工作。在布莱克·斯科尔斯统治市场之前,已经有少数工程师和科学家进入曼哈顿下城市场了,但他们大都是外来移民。麻省理工、哈佛和此类高等学府的工程楼和科学.

    2022年7月11日
    17
  • bootstrap分页样式

    bootstrap分页样式bootstrap分页样式在bootstrap.min.css文件中好像没有包含进来bootstrap.css才有的 .pagination{height:40px;margin:20px0;}.paginationul{border-radius:3px3px3px3px;box-shadow:01px2pxrg

    2022年7月17日
    11
  • 前缀和与差分数组(附练习题)

    前缀和与差分数组(附练习题)前缀和与差分数组前缀和前缀和对于a1,a2,a3,a4,a5,a6,…前缀和Si=a1+a2+a3+a4+…+ai,S0=0其中,[l,r]区间的前缀和为:Sr-S(l-1)非

    2022年5月18日
    40
  • jmeter的正则表达式提取器_正则表达式提取

    jmeter的正则表达式提取器_正则表达式提取应用场景:在一个线程组中,B请求需要使用A请求返回的数据,也就是常说的关联,将上一个请求的响应结果作为下一个请求的参数,则需要对A请求的响应报文使用后置处理器,其中最方便最常用的就是正则表达式提取器了。正则表达式提取器:允许用户从作用域内的sampler请求的服务器响应结果中通过正则表达式提取值所需值,生成模板字符串,并将结果存储到给定的变量名中。先上个图:各配置项介绍:APPlyto:作用范围…

    2022年9月11日
    0
  • int转long类型[通俗易懂]

    int转long类型[通俗易懂]一.将long型转化为int型,这里的long型是基础类型:longa=10;intb=(int)a;二.将Long型转换为int型的,这里的Long型是包装类型:Longa=10;intb=a.intValue();三.将int型转化为long型,这里的int型是基础类型:inta=10;longb=(int)a;四.将Integer…

    2022年6月6日
    298
  • xshell ping不通虚拟机_虚拟机为什么ping不通主机

    xshell ping不通虚拟机_虚拟机为什么ping不通主机有朋友联系说:“虚拟机可以ping本机,本机也可以ping虚拟机,但是Xshell连接不上虚拟机。”,找了不少资料发现好像不是这个问题的解决方法,所以在这里介绍下怎么解决这个问题。同时,总结几种xshell连接不上虚拟机的解决方法。

    2022年9月22日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号