当前位置: 首页 > news >正文

Django2.0——请求与响应(下)

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

返回的页面如下:

转载于:https://www.cnblogs.com/longwhite/p/10397668.html

相关文章:

  • 华为敏捷DevOps实践:如何从Excel管理软件的方式中走出来
  • CentOS7配置Kubernetes(K8S)集群
  • Docker在Linux/Windows上运行NetCore文章系列
  • 使用Python将MongoDB数据导到MySQL
  • Rem之自适应js
  • ubuntu16.04下安装postgresql 10.3
  • Groovy与Java集成常见的坑
  • SQLserver视图修改sql
  • Visual Studio Code编写C/C++代码常见问题
  • iOS8 自定义UITabBar (使用popToViewController导致的UITabBarButton重叠的问题)
  • 排序算法(Merge Sort)中的 merge 步
  • BAT集体升级云事业部,这背后都藏着哪些“小心思”?
  • 【福利】BAT架构师分享最全Java架构师学习技能图谱:包含Java编程+网络+设计模式+数据库+分布式等...
  • 电磁波、无线电、802、WLAN及WiFi的区别与联系
  • 为什么Fiddler可以但是Charles不行
  • ES6指北【2】—— 箭头函数
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【node学习】协程
  • centos安装java运行环境jdk+tomcat
  • gulp 教程
  • HashMap剖析之内部结构
  • JavaScript 基础知识 - 入门篇(一)
  • Lsb图片隐写
  • Lucene解析 - 基本概念
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Windows Containers 大冒险: 容器网络
  • XForms - 更强大的Form
  • yii2中session跨域名的问题
  • 安卓应用性能调试和优化经验分享
  • 大快搜索数据爬虫技术实例安装教学篇
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 为视图添加丝滑的水波纹
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • #laravel 通过手动安装依赖PHPExcel#
  • %check_box% in rails :coditions={:has_many , :through}
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET MVC第三章、三种传值方式
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 提取注释生成API文档 帮助文档
  • .NET中的十进制浮点类型,徐汇区网站设计
  • ;号自动换行
  • @test注解_Spring 自定义注解你了解过吗?
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [C++]18:set和map的使用
  • [CISCN2019 华东南赛区]Web4
  • [C语言]一维数组二维数组的大小
  • [HNOI2018]排列
  • [loj6039]「雅礼集训 2017 Day5」珠宝 dp+决策单调性+分治