文章目录
- 1 Response功能介绍
- 2 HttpResponse
- 2.1 HttpResponse对象介绍
- content_type
- Content-Type是什么?
- Content-Type的格式
- Content-Disposition
- Content-Disposition的作用
- Content-Disposition的使用语句
- 例子
- 2.2 HttpResponse常用用法
- 3 JsonResponse
- 3.1 JsonResponse对象介绍
- 往期回顾
- response:设置响应数据
- 业务处理完后,后台就需要给前端返回业务处理的结果即响应数据
- 把响应数据封装到response对象中
- 后台服务器[Tomcat]会解析response对象,按照[响应行+响应头+响应体]格式拼接结果
- 浏览器最终解析结果,把内容展示在浏览器给用户浏览
- response对象是用来封装响应数据的对象
1 Response功能介绍
注意,这个是javaweb的内容,但我估计可通用理解
功能:设置响应消息1.设置响应行1.格式:HTTP/1.1 200 ok2.设置状态码:setStatus(int sc)2.设置响应头:setHeader(String name,String value)3.设置响应体:使用步骤:1.获取输出流字符输出流:PrintWriter getWriter()字节输出流:ServletOutputStream getOutputStream()2.使用输出流,将数据输出到客户端浏览器中
2 HttpResponse
Django服务器接收到客户端发送过来的请求后,会将提交上来的数据封装成httpRequest对象传给视图函数。那么视图处理完相关逻辑后,也需要返回一个响应给浏览器。而这个响应必须返回HttpResponseBase或者他的子类的对象
2.1 HttpResponse对象介绍
HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)
response = HttpResponse(content=响应体, content_type=响应体数据类型,默认为text/html, status=状态码,默认为200)
也可通过HttpResponse对象属性来设置响应体、状态码:
content:表示返回的内容。
status_code:返回的HTTP响应状态码。
content_type
Content-Type是什么?
在HTTP协议消息头中,使用Content-Type来表示媒体类型信息。它被用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析html或仅仅展示一个文本等。
Post请求的内容放置在请求体中,Content-Type定义了请求体的编码格式。数据发送出去后,还需要接收端解析才可以。接收端依靠请求头中的Content-Type字段来获知请求体的编码格式,最后再进行解析。
简单来说,Content-Type 字段用于服务器回应时,告诉客户端,本次数据是什么格式。
Content-Type的格式
Content-Type:type/subtype ;parameter
type:主类型,任意的字符串,如text,如果是*号代表所有;
subtype:子类型,任意的字符串,如html,如果是*号代表所有,用“/”与主类型隔开;
parameter:可选参数,如charset,boundary等。
例如:
# 发送的是网页
Content-Type: text/html;# 发送的是参数以json字符串传递给后台,且编码是UTf-8
Content-Type: application/json;charset:utf-8;# application/x-www-form-urlencoded 这是浏览器原生的form表单类型,或者说是表单默认的类型。
#发送的是窗体数据被编码为名称/值对,且编码是UTf-8
Content-Type: application/x-www-form-urlencoded;charset:utf-8;
部分访问的格式
‘doc’ => ‘application/msword’,
‘bin’ => ‘application/octet-stream’,
‘exe’ => ‘application/octet-stream’,
‘so’ => ‘application/octet-stream’,
‘dll’ => ‘application/octet-stream’,
‘pdf’ => ‘application/pdf’,
‘ai’ => ‘application/postscript’,
‘xls’ => ‘application/vnd.ms-excel’,
'ppt' => 'application/vnd.ms-powerpoint',
'dir' => 'application/x-director',
'js' => 'application/x-javascript',
'swf' => 'application/x-shockwave-flash',
'xhtml' => 'application/xhtml+xml',
'xht' => 'application/xhtml+xml',
'zip' => 'application/zip',
'mid' => 'audio/midi',
'midi' => 'audio/midi',
'mp3' => 'audio/mpeg',
'rm' => 'audio/x-pn-realaudio',
'rpm' => 'audio/x-pn-realaudio-plugin',
'wav' => 'audio/x-wav',
'bmp' => 'image/bmp',
'gif' => 'image/gif',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'png' => 'image/png',
'css' => 'text/css',
'html' => 'text/html',
'htm' => 'text/html',
'txt' => 'text/plain',
'xsl' => 'text/xml',
'xml' => 'text/xml',
'mpeg' => 'video/mpeg',
'mpg' => 'video/mpeg',
'avi' => 'video/x-msvideo',
'movie' => 'video/x-sgi-movie',
Content-Disposition
响应头
简单来讲,这个就是设置下载相关的
Content-Disposition的作用
1)希望某类或者某已知MIME类型的文件(比如:.doc;.jpg;*.htm)能够在访问时弹出"文件下载对话框"
2)希望客户端下载时以指定文件名显示
3)希望某文件被点击后才弹出文件下载对话框
Content-Disposition的使用语句
response['Content-Disposition'] = 'attachment; filename="users.xls"'
attachment:表示以附件方式下载,如果要在页面中打开,可以改为inline.
filename:表示文件下载的名称
注意:filename如果是中文会出现乱码:解决办法:
1、将filename 替换为 new String(filename.getBytes(), “ISO8859-1”);
2、将filename 替换为 URLEncoder.encode(filename, “utf-8”);
例子
from django.http import HttpResponsedef demo_view(request):return HttpResponse("OK", status=400)或者response = HttpResponse("OK")response.status_code = 400response['中国'] = '北京'return response
class TestQuery(View):def get(self, request):#HttpResponse默认返回的是html字符串类型的数据,#如果我们要响应html字符串以外的数据该如何实现?#比如要响应图片格式#HttpResponse(content=图片的原始数据, content_type=响应体数据类型,默认为image/jpg, status=状态码,默认为200)response = HttpResponse('test')return response
2.2 HttpResponse常用用法
- 通过HttpResponse下载文件
- 网页的状态码及其修改和加标签
- 跳转网页
[(5条消息) Django学习之HttpResponse的一些常用用法功能。(详解!!!)_django http response_Kinght_123的博客-CSDN博客](https://blog.csdn.net/Kinght_123/article/details/111415693?ops_request_misc=&request_id=&biz_id=102&utm_term=django response&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-111415693.142v88control_2,239v2insert_chatgpt&spm=1018.2226.3001.4187)
3 JsonResponse
响应JSON
3.1 JsonResponse对象介绍
-
在开发功能时,如果前端需要JSON数据,那么后端就需要构造并响应JSON数据,这也是我们在开发中使用最多的。
-
而Django提供了JsonResponse来构造并响应JSON数据
-
JsonResponse作用:
- 帮助我们将响应的数据转换为JSON字符串
- 设置响应头Content-Type为 application/json
eg: 注意,只能传字典的数据
# 设置响应头Content-Type为 application/jsonclass TestQuery(View):def get(self, request):# 准备要响应的数据dict_data = {'name': 'lx','age': 100}# 使用JSONResponse构造并响应JSON数据return JsonResponse(dict_data)
往期回顾
1.【快速开发网站】
2.【浏览器能识别的标签1】
3.【浏览器能识别的标签2】
4.【浏览器能识别的标签3】
5.【浏览器能识别的标签4】
6.【案例1:用户注册】
7.【案例2:用户注册改进】
8.【快速了解 CSS】
9.【常用选择器概念讲解】
10.【CSS基础样式介绍1】
11.【CSS基础样式介绍2】
12.【CSS基础样式介绍3】
13.【CSS基础样式介绍3】
14.【案例 小米商城头标】
15.【案例 小米商城头标总结】
16.【案例 小米商城二级菜单】
17.【案例 商品推荐部分】
18.【伪类简单了解】
19.【position】
20.【案例 小米商城中app图标代码】
21.【边框及总结】
22.【BootSrap初了解】
23.【BootSrap的目录栏】
24.【BootSrap的栅格系统】
25.【案例 博客案例】
26.【案例 登录】
27.【案例 后台管理样例】
28.【图标】
29.【BootStrap依赖】
30.【javascript初了解】
31.【jJavaScript的变量】
32.【JavaScript的字符串类型】
33.【JavaScript的数组介绍】
34.【案例 动态数据】
35.【javascript 对象(字典)】
36.【案例 动态表格】
37.【Javascript的条件语句和函数】
38.【DOM初了解】
39.【DOM的事件了解】
40.【jQuery初了解】
41.【jQuery寻找标签】
42.【jQuery寻找标签2】
43.【jQuery寻找标签(间接寻找)】
44.【案例 菜单的切换】
45.【案例 只能打开一个菜单】
46.【jQuery 简单操作】
47.【案例 动态创建数据】
48.【案例 点击获取文本】
49.【案例 点击删除文本】
50.【案例 表格操作】
51.【案例 添加页面】
52.【初识MySQL】
53.【MySQL命令介绍一】
54.【MySQL命令介绍二】
55.【MySQL命令介绍三】
56.【案例:员工管理】
57.【案例 Flask+MySQL新增用户】
58.【案例 Flask+MySQL查询所有用户】