上篇讲完了请求,这篇接着讲下响应,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. python中excel表格的读写

    #!usr/bin/env python #-*- coding:utf-8 -*- import xlrd import xlwt from xlutils.copy import copy imp ...

  2. windows 禁用中文输入法(转)

    源博客地址:http://blog.csdn.net/xie1xiao1jun/article/details/17913967 windows 程序禁用中文输入法方法:1.添加windows头文件及 ...

  3. NRF52840与NRF52832的性能区别

    蓝牙版本的不断更新,大部分客户慢慢都向往着蓝牙5.0.当然对于前不久NORDIC刚出的蓝牙5.0 NRF52840,很多人都还不是很了解.NRF52840可以说是NRF52832的超强升级版,虽然同样 ...

  4. 解决CSS背景模糊

    .banner{ background:url(banner.jpg); -moz-background-size:100% 100%; background-size:100% 100%; }

  5. 我为NET狂官方面试题-数据库篇答案(转)

    题目:http://www.cnblogs.com/dunitian/p/6028838.html 汇总:http://www.cnblogs.com/dunitian/p/5977425.html ...

  6. 微信小程序调用用百度地图天气功能

    #小程序之调用百度地图天气功能 本篇博客主要介绍小程序在百度地图中获取天气信息,如有不全请指出.下面先上效果图 主要内容 百度地图API的个人密钥,也就是AK 请求百度地图API接口数据 获取到的信息 ...

  7. 二十四、JavaScript之取字符串长度

    一.代码如下 二.效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" conten ...

  8. 七十四、SAP中内表的4中删除方法

    一.代码如下 二.效果如下 *&---------------------------------------------------------------------* *& Re ...

  9. XML 之 语法详解

    一.文档规则 .区分大小写. .属性值必须加引号(单引号.双引号都可以),一般情况下建议使用使用双引号. .所有标记必须有结束符号. .所有空标记必须关闭. .必须有且仅有一根元素. .解析空白字符时 ...

  10. SpringMVC: JSON

    SpringMVC:JSON讲解 什么是JSON? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛. 采用完全独立于编 ...