上篇讲完了请求,这篇接着讲下响应,django响应类型大致有以下几种

  • HttpResponse:返回简单的字符串
  • render:渲染模板
  • redirect:重定向
  • JsonResponse:返回json数据
  • HttpResponse子类:如HttpResponseNotFound,它会返回一个404状态的页面。

HttpResponse

使用django.http.HttpResponse来构造响应对象,可利用HttpResponse这个类来进行响应的实例化。

HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)

属性:

  • content:表示返回的内容,是字符串类型。
  • charset:表示response采用的编码字符集,字符串类型。
  • status_code:响应http的状态码。
  • content-type:指定输出的MIME类型。

方法

  • init():实例化HttpResponse对象
  • write(content):以文件方式写
  • flush():以文件方式输出缓存区
  • set_cookie(key,value='',max_age=None,expire=None):设置cookie,其中参数max_age和expire二选一,是用来设定cookie的有效期,max_age类型为int,单位是秒,expire值的是datatime类型或timedelta类型。
  • delete_cookie(key):删除指定key的cookie,若key不存在,则什么都不会发生。

HttpResponse子类

Django提供了一系列HttpResponse的子类,可以快速设置状态码。下面例出一些常用的。

  • HttpResponseRedirect 301
  • HttpResponsePermanentRedirect 302
  • HttpResponseNotModified 304
  • HttpResponseBadRequest 400
  • HttpResponseForbidden 403
  • HttpResponseNotFound 404
  • HttpResponseNotAllowed 405
  • HttpResponseServerError 500

JsonResponse

使用django.http.JsonResponse来构造响应对象,若要返回json数据,可以使用JsonResponse来构造响应对象。此时响应头的content-type为 application/json。

JsonResponse({'key1': 'value1', 'key2': 'value2'})

redirect重定向

from django.shortcuts import redirect,reverse,重定向常配合name及reverse来使用。reverse用于反向解析name。

Cookie

客户端与服务端可以通过cookie来保持登陆的状态, 即刚开始的时候,客户端post请求将登陆信息发给服务端,服务端就发送与之对应的cookie给客户端,客户端将接收到的cookie保存于本地浏览器中,当再次访问这个网站时,客户端发送的数据就会自动携带上这个cookie信息来实现自动登陆,以此来保持登陆状态。

我们可以看看本地浏览器的cookie信息,本人使用的是google,步骤是点击设置中的高级设置、内容设置、cookie、查看所有cookie...

下面就响应写个简易的视图函数。返回一个HttpResponse类型的响应,并设置一个cookie来返回给客户端。

import datetime
def Post(request):
response = HttpResponse(content="666",status=200)
response.set_cookie('name','huge',max_age=100)
return response

配置url:

path('index/post/',views.Post)

输入路由可得到一个666的页面,查看本地cookie,发现如下:

其cookie有效期为服务端给定的100秒。

给用expire试试

import datetime
def Post(request):
response = HttpResponse(content="666",status=200)
response.set_cookie('name','liuyifei',expires=datetime.datetime(2018,12,14))
return response

cookie有效期为给定的2018.12.14号。

下面我们将响应类型改为HttpResponse的子类。

def Post(request):
response = HttpResponseNotFound(content="888")
return response

发现返回页面的状态码为404

改用JsonResponse类型:

def Post(request):
response = JsonResponse({'sge':18,'tel':15215})
return response

返回的页面如下:

Django2.0——请求与响应(下)的更多相关文章

  1. Django2.0——请求与响应(上)

    客户端与服务段通过http协议进行数据的传输,而http协议是一种双向单工的,且主动发起连接的只有客户端.故数据的传送就离不开请求和响应,客户端每发起一个请求,服务端就是返回一个响应.在django的 ...

  2. ThinkPHP5.0框架开发--第6章 TP5.0 请求和响应

    ThinkPHP5.0框架开发--第6章 TP5.0 请求和响应 第6章 TP5.0 请求和响应 ===================================== 上次复习 1.新建控制器 ...

  3. 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析

    [渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...

  4. ASP.NET Core 请求/查询/响应参数格式转换(下划线命名)

    业务场景: 在 ASP.NET Core 项目中,所有的代码都是骆驼命名,比如userName, UserName,但对于 WebApi 项目来说,因为业务需要,一些请求.查询和响应参数的格式需要转换 ...

  5. Win10系统下使用Django2.0.4+Celery4.4.2+Redis来实现异步任务队列以及定时(周期)任务(2020年最新攻略)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_153 首先明确一点,celery4.1+的官方文档已经详细说明,该版本之后不需要引入依赖 django-celery 这个库了,直 ...

  6. jmeter——JSON提取器(从上一个请求的响应结果提取参数传给下一个请求)

    记录一个参数提取过程,可供后续参考. 1. 查看响应报文的结构 将上一个请求的响应报文复制到Notepad++编辑器 JSON Viewer是Notepad++的JSON插件, Notepad++的P ...

  7. python3下Django2.0配置最新xadmin详解

    1,打开pycharm,创建一个Django项目 2,安装Django,默认是最新版本,pip3 install -i https://pypi.douban.com/simple/ django 3 ...

  8. 基于centos7+nginx+uwsgi+python3+django2.0部署Django项目

    0.序言 本文讲解如何基于centos7+nginx+uwsgi+python3+django2.0把windows上的本地项目部署到云服务器上. 本文服务器上的django项目和虚拟环境的路径将建立 ...

  9. 《玩转Django2.0》读书笔记-探究视图

    <玩转Django2.0>读书笔记-探究视图 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 视图(View)是Django的MTV架构模式的V部分,主要负责处理用户请求 ...

随机推荐

  1. use matplotlib to drew a table

    $sudo apt-get install python3-matplotlib gyf@gyf-VirtualBox:~$ python3Python 3.6.9 (default, Nov  7 ...

  2. RabbitMQ消息队列帮助类

    调用 //消息队列发消息 MqConfigInfo config = new MqConfigInfo(); config.MQExChange = "DrawingOutput" ...

  3. 留学萌新Essay写作须知

    Essay是留学生们接触比较多的一项留学生作业,但尽管如此,依旧有部分同学对于essay写作是没有足够的把握的.随着开学季的到来,很多萌新初次接触Essay写作,难免会有很多不懂得地方.所以今天小编就 ...

  4. NumPy 排序、查找、计数

    章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基于数值区间创建数组 NumPy 数组切 ...

  5. 对近期docker学习的总结

    Docker 总结 1. 说在前头(Docker命令的格式) docker中的对象分为4个(就目前我所学到的) 镜像 image 容器 container 网络 network 数据卷 volume ...

  6. linux下软件包的安装方式

    参考:https://blog.51cto.com/13589255/2071277

  7. EUI库 - 概述

        新特性 36k   访问EUI组件宽高时,也会跟原生显示对象的表现一致,立即能得到包含子项的宽高值   统一的显示列表  普通对象和eui对象都可用addChild来添加   一个逻辑组件只管 ...

  8. 【pwnable.kr】bof

    pwnable从入门到放弃,第三题. Download : http://pwnable.kr/bin/bofDownload : http://pwnable.kr/bin/bof.c Runnin ...

  9. bzoj 1009GT考试

    做了上一道题,全程懵逼,再做这一道,,,23333继续 貌似那些东西都是差不多的.(参见cf621E) 这个为什么b[][]+=1很困惑,为什么不是从b[-1][??]转移的呢?想了一下,因为每一次都 ...

  10. Python学习:安装配置pycharm编辑器

    我只介绍windows的安装过程,因为mac的安装过程实在是过于简单了,一路继续就可以了. 1. windows安装过程 1.1 下载安装包,软件可以找我领取 ! ​ 根据自己的操作系统进行下载,左侧 ...