上篇讲完了请求,这篇接着讲下响应,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. --转载 详细介绍java中的数据结构

    http://developer.51cto.com/art/201107/273003.htm 也许你已经熟练使用了java.util包里面的各种数据结构,但是我还是要说一说java版数据结构与算法 ...

  2. maven手动安装ojdbc6.jar包到本地仓库

    需要jar文件 ojdbc6.jar jar下载地址1   下载地址2 本地执行: mvn install:install-file -Dfile=D:/ojdbc6.jar -DgroupId=co ...

  3. 一个swift版简单的用户名和密码输入textField

    http://www.code4app.com/thread-31992-1-1.html 常见的动画提交按钮 http://www.code4app.com/thread-32239-1-1.htm ...

  4. gem5-gpu全系统模式

    # 注意:安装好gem5-gpu后再配置全系统环境 # 下载全系统模拟需要的工具,详见http://gem5.org/Running_gem5#Full_System_.28FS.29_Mode,将L ...

  5. 关于c++静态类的说法

    看了网上的观点,大致有这几种比较好的. 观点一:根据现代的C++观点,静态类没有必要存在于C++中. 一个类是对一个概念的描述,类的本质是它维护了一个不变式,也就是说它有一个状态,它所有的接口都是为了 ...

  6. Apache NiFi Processor实战

    1 前言 Apache NiFi是什么?NiFi官网给出如下解释:“一个易用.强大.可靠的数据处理与分发系统”.通俗的来说,即Apache NiFi 是一个易于使用.功能强大而且可靠的数据处理和分发系 ...

  7. springMVC上传文件和文件下载

    springMVC.xml文件 <bean id="multipartResolver" class="org.springframework.web.multip ...

  8. Sublime 一些常用快捷键

    Sublime插件安装和使用-----------------------------最常用的1.新建文件-输入"html:xt"后 按"Ctrl+E键"或 & ...

  9. 1.求子集,2.动态创建action

    功能待完善 #ifndef MYMAINWINDOW_H #define MYMAINWINDOW_H #include <QMainWindow> #include <QTable ...

  10. POJ 1320:Street Numbers

    Street Numbers Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2753   Accepted: 1530 De ...