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,一经查实,立即删除!

相关文章

编写一个程序,输入a、b、c三个值,输出其中最大值。

/* 题目描述 编写一个程序&#xff0c;输入a、b、c三个值&#xff0c;输出其中最大值。 输入 在一行中输入三个整数 输出 三个数中最大的数 */ #include<stdio.h> #include<math.h> int main(void) { int a, b, c; scanf("%d %d %d", &…

vue组件双向绑定

在Vue中&#xff0c;双向绑定是一个核心概念&#xff0c;它允许数据在视图&#xff08;View&#xff09;和组件的状态&#xff08;或数据模型&#xff09;之间自动同步。这种机制主要通过Vue的v-model指令来实现&#xff0c;但v-model实际上是一个语法糖&#xff0c;它背后依赖…

软件架构设计——关联对象

关联对象的原理 关联对象是在软件架构设计中&#xff0c;用来表示两个或多个对象之间的关系。它们通过引用或指针相互关联&#xff0c;从而可以彼此访问对方的数据和行为。这种关联可以是单向的&#xff0c;也可以是双向的&#xff0c;具体取决于业务需求。 单向关联&#xf…

malloc的底层原理和流程

目录 一、malloc的内存申请方式二、malloc的内存池管理1、分级内存池2、内存块信息3、内存块合并4、内存块分割 三、brk的内存分配过程1、空闲链表2、sbrk 四、malloc的缺陷 前言&#xff1a;从malloc的内存方式、内存池管理、brk系统调用过程这三个点&#xff0c;讲述malloc系…

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 …

Linux安装Miniconda3

Linux安装Miniconda3 安装步骤相关知识 安装步骤 官方安装指南。 mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3 rm ~/miniconda…

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

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

(十六)Flink 状态管理

目录 状态类型 Keyed State Keyed State 分类 状态有效期(TTL) 过期数据的清理 Operator State Broadcast State 状态存储 State Backends 分类 设置 State Backend RocksDB State Backend 详解 在 Flink 架构体系中,状态(State)计算是其重要的特性之一。状态用…

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;导致网络拥堵…

【jvm】栈是否存在垃圾回收

目录 一、栈的特点1.1 栈内存分配1.2 栈的生命周期1.3 垃圾回收不直接涉及 二、堆与栈的区别三、总结 一、栈的特点 1.1 栈内存分配 1.栈内存分配是自动的&#xff0c;不需要程序员手动分配和释放。 2.每当一个方法被调用时&#xff0c;JVM就会在这个线程的栈上创建一个新的栈…

移动端爬虫学习记录

免责声明 本文旨在探讨移动端爬虫技术的应用和挑战&#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;查看配置…

继承与构造函数与析构函数

一 #include<iostream> using namespace std; class father { public:father(){cout << "father无参构造函数" << endl;}father(int x):fa(x){cout << "father单参构造函数" << endl;}~father() {cout << "fath…

【docker compose 部署和 go 热部署工具fresh】

文章目录 docker-compose.yml 文件配置得很全面&#xff0c;以下是一些注释安装 fresh配置 fresh注意事项 docker-compose.yml 文件配置得很全面&#xff0c;以下是一些注释 version: 3 services:# MySQL 服务geekai-mysql:image: registry.cn-shenzhen.aliyuncs.com/geekmast…

计算机视觉(CV)技术的优势和挑战。

计算机视觉&#xff08;CV&#xff09;技术在许多领域中具有广泛的应用&#xff0c;并且具有一些优势和挑战。 优势&#xff1a; 1. 高效性&#xff1a;CV技术能够快速处理大量的图像和视频数据&#xff0c;以实现实时的分析和决策。 2. 自动化&#xff1a;CV技术可以自动化地…

CSS的table显示值:布局艺术的幕后推手

CSS的table显示值&#xff1a;布局艺术的幕后推手 摘要 CSS&#xff08;层叠样式表&#xff09;是构建网页布局的核心技术之一。display: table;是CSS中一个强大的属性&#xff0c;它允许元素表现得像HTML表格一样。本文将深入探讨table显示值如何影响元素的布局&#xff0c;…

C++ QT 单例模式

在 C 中&#xff0c;使用 Qt 框架实现单例模式可以确保一个类只有一个实例&#xff0c;并提供一个全局访问点。以下是一个简单的 C Qt 单例模式实现示例。 1. 饿汉式单例模式 饿汉式单例模式在类加载时就初始化单例对象。 // MySingleton.h #ifndef MYSINGLETON_H #define M…

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个分区和…