django学习入门系列番外篇《request》

文章目录

    • 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对象介绍

  1. 在开发功能时,如果前端需要JSON数据,那么后端就需要构造并响应JSON数据,这也是我们在开发中使用最多的。

  2. 而Django提供了JsonResponse来构造并响应JSON数据

  3. JsonResponse作用:

    1. 帮助我们将响应的数据转换为JSON字符串
    2. 设置响应头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查询所有用户】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2054. 骑马修栅栏

代码 #include<bits/stdc.h> using namespace std; int mp[505][505]; queue<int> ans; int du[505]; int n0,m,u,v;void dfs(int i) {for(int j1;j<n;j){if(mp[i][j]>1){mp[i][j]--;mp[j][i]--;dfs(j);}}ans.push(i); } int main() {cin>>m;for(int …

WordPress简约响应式个人博客Kratos主题

Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净&#xff0c;简单且响应迅速的博客主题&#xff0c;Vtrois创建和维护&#xff0c;主题设计简约友好&#xff0c;并且支持响应式&#xff0c;自适应访问&#xff0c;简seo单大方的主页构造&#xff0c;使得博客能在臃肿…

8.20T3 无损加密(线性代数转LGV+状压dp+高维前缀和)

http://cplusoj.com/d/senior/p/NODSX2301C 对于式子&#xff1a; 这个神秘的线性代数形式比较难处理&#xff0c;但我们可以考虑其组合意义。行列式现存的可用组合意义之一就是LGV&#xff08;矩阵式不太可用&#xff09; 先把原先的矩阵转化为一个有向图。现在我们要构造一…

ArcGIS如何将投影坐标系转回为地理坐标系

有时候两个数据&#xff0c;一个为投影坐标系&#xff0c;另一个为地理坐标系时&#xff0c;在GIS软件中位置无法叠加到一起&#xff0c;这需要将两个或多个数据的坐标系统一&#xff0c;可以直接将地理坐标系的数据进行投影&#xff0c;或将投影坐标系转为地理坐标系。下面介绍…

自养号测评技术:如何挑选适合的IP环境方案

市面上的IP服务及常见问题 当前市场上常见的IP服务包括911、Luminati、Google Fi、TM流量卡、Socks专线等。这些服务在为用户提供网络代理或VPN服务时&#xff0c;常会遇到以下主要问题&#xff1a; 1. 高负载与重复率高&#xff1a;由于使用人数众多&#xff0c;导致网络拥堵…

移动端爬虫学习记录

免责声明 本文旨在探讨移动端爬虫技术的应用和挑战&#xff0c;仅供教育和研究用途。请确保在合法合规的框架内使用爬虫技术&#xff0c;遵循相关法律法规和网站的使用条款。作者不对因使用本文内容而产生的任何法律或安全问题承担责任。 1、初识移动端爬虫 学习移动端爬虫的原…

docker映射了端口,宿主机不生效

1、问题产生原因 docker run -d --name my-redis -p 6379:6379 -v /usr/redis.conf:/usr/local/etc/redis/redis.conf team-redis:3.2 redis-server /usr/local/etc/redis/redis.conf 这容器跑起来了&#xff0c;端口6379没用。搞的我一直怀疑哪里出错了&#xff0c;查看配置…

Kakfa的核心概念-Replica副本(kafka创建topic并指定分区和副本的两种方式)

Kakfa的核心概念-Replica副本&#xff08;kafka创建topic并指定分区和副本的两种方式&#xff09; 1、kafka命令行脚本创建topic并指定分区和副本2、springboot集成kafka创建topic并指定分区和副本2.1、springboot集成kafka2.1.1、springboot集成kafka创建topic并指定5个分区和…

VScode 连接远程服务器

1、 2、 3、免密登录 1、本地生成密钥 ssh-keygen2、生成的密钥默认在 C:\Users\***\.ssh\ 中3、将私钥 C:\Users\***\.ssh\id_rsa 添加到上面的配置文件中的 IdentityFile 项内4、将公钥 C:\Users\***\.ssh\id_rsa\id_rsa.pub 拷贝到远程 ~/.ssh/authorized_keys 中 4、远程…

【精选】基于django柚子校园影院(咨询+解答+辅导)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Golang | Leetcode Golang题解之第371题两整数之和

题目&#xff1a; 题解&#xff1a; func getSum(a, b int) int {for b ! 0 {carry : uint(a&b) << 1a ^ bb int(carry)}return a }

「Python数据分析」Pandas进阶,利用concat()函数连接数据(一)

在我们迈向中高级出局数据分析的过程中&#xff0c;数据的合并和连接&#xff0c;是一个非常重要的技能。 现实中&#xff0c;分散在各种数据库&#xff0c;各种数据表格&#xff0c;各种数据存储设备当中的&#xff0c;各式各样的数据&#xff0c;是我们进行数据分析的基础&a…

SmartGit-Git版本控制系统的图形化客户端

SmartGit&#xff1a; SmartGit是一款免费的、专业的Git版本控制系统的图形化客户端。它适用于Windows、Mac和Linux等多种操作系统&#xff0c;提供了直观的用户界面和丰富的功能。支持创建、克隆、推送、拉取、合并和管理Git仓库&#xff0c;以及强大的分支管理功能。还提供了…

(免费领源码)python#Django#msyql学生个性化培养的教学资源平台的设计与实现19385-计算机毕业设计项目选题推荐

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对学生个性化培养的教学资源平台等问题&#…

进制转换计算幸运数出现次数(华为od机考题)

一、题目 1.原题 有位客人来自异国&#xff0c;在该国使用m进制计数。 该客人有个幸运数字n(n<m)&#xff0c;每次购物时&#xff0c; 其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。 问&#xff1a;当其购买一个在我国价值k的产品时&#xff0c;…

UE管理内容 —— FBX Asset Metadata Pipeline

随着实时3D制作大小和复杂程度的增加&#xff0c;以及构成现代制作流程的工具数量的不断增加&#xff0c;增加智能自动化来提高美术效率变得越发重要&#xff1b;这种智能自动化通常主要依靠元数据&#xff1a;有关资源的自定义数据&#xff0c;在项目中为资源赋予意义&#xf…

【Nginx】快速入门

概述 Nginx(engine x)是一个高性能的HTTP和反向代理web服务器。 特点是占有内存小&#xff0c;并发能力强&#xff0c;简单易配置&#xff0c;支持高达 50000 个并发连接数的响应。 作用 代理 正向代理&#xff1a; 反向代理&#xff1a; 负载均衡 Nginx提供的负载均衡策…

8.4 数据库基础技术-SQL

大数据 SQL语言 真题 1

[C语言]一、C语言基础

G:\Cpp\C语言精讲 1. C语言入门 1.1 初识计算机语言 计算机编程语言&#xff0c;就是人与计算机交流的方式。人们可以使用编程语言对计算机下达命令&#xff0c;让计算机完成人们需要的功能。 计算机语言有很多种。如&#xff1a;C 、C、Java、Go、JavaScript、Python&#x…

【Spring】初识Spring MVC

文章目录 前言一、MVC是什么&#xff1f;二、学习Spring MVC建立连接RequestMapping注解注解的使用细节 三、传递参数的情况传递单个参数1.传递String2.传递包装类/基本类型3.参数重命名(RequestParam) 传递多个参数传递对象传递数组传递集合参数为变量传递文件小细节 四、JSON…