上篇讲完了请求,这篇接着讲下响应,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

返回的页面如下:

最新文章

  1. iOS开发常用代码块(第二弹)
  2. 微信小程序demo汇总
  3. linux小程序--cmatrix
  4. c#遍历目录及子目录下某类11型的所有的文件
  5. Android课程---手机尺寸相关的概念 +尺寸单位+关于颜色
  6. zabbix监控交换机
  7. servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)
  8. iOS开发-UITextView根据内容自适应高度
  9. Mac OS X 中安装JDK 7
  10. 转NodeJS的npm模块版本号 模式解析
  11. MPQ Storm库 源代码分析 一个
  12. 系统的讲解 - PHP 缓存技术
  13. Shell脚本笔记(五)Shell函数
  14. python 怎么让list里面设置NAN numpy.nan
  15. Win7 配置免安装mysql5.7.20过程详解
  16. Fiddler 简单介绍
  17. 深入字节码理解invokeSuper无限循环的原因
  18. 〖Windows〗zigbee实验之cygwin编译TestSimpleMac并测试通信
  19. 生产环境手把手部署ERC20智能合约
  20. springboot注册bean失败

热门文章

  1. P 1008 数组元素循环右移问题
  2. netty权威指南学习笔记七——编解码技术之GoogleProtobuf
  3. 三十五、在SAP中定义选择屏幕,设置选择范围
  4. Angular 学习1
  5. 编译Linux
  6. (HN)AHOI2018 转盘
  7. Spark 集群 任务提交模式
  8. 每天一点点之vue框架开发 - vue坑-input 的checked渲染问题
  9. EUI库 - 容器
  10. java课程之团队开发冲刺阶段2.2