前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django的请求与响应

Django的请求与响应

作者头像
Yuou
发布2022-09-26 15:26:37
5910
发布2022-09-26 15:26:37
举报
文章被收录于专栏:乱七八糟技术日常

请求与响应

  • 请求是指浏览器通过HTTP协议发送给服务端的数据
  • 响应指的是服务端收到响应后做相应处理后再返回给浏览器

请求样例

代码语言:javascript
复制
GET /user/api/qoqa HTTP/1.1   ---> 起始行
Host: 127.0.0.1:8000   ---> 请求头
Connection: keep-alive
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
sec-ch-ua-mobile: ?0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: csrftoken=eOANN43FZcrKEyrhBtbyiRsQ9tdXjQky5DK7uurZ0ziC9uA94OH1TXfRoQtAfBod
{"username":"TETSTQIQUQ"} ---> 请求体

请求方法

  • HTTP1.0定义了三种请求方法: GETPOSTHEAD
  • HTTP1.1 新增了五种请求方法: OPTIONSPUTDELETETRACE以及CONNECT方法

方法

描述

GET

请求指定页面信息,并且返回实体。

HEAD

类似于GET请求,只不过返回的响应中没有具体内容,只返回响应头。

POST

向指定资源提交数据进行处理请求,数据被包含在请求体中。

PUT

从客户端向服务器发送的数据取代指定文档中的内容。

DELETE

请求服务器删除指定的页面。

CONNECT

预留的管道连接代理服务器。

OPTIONS

允许客户端查看服务器性能。

TRACE

用于显示服务器收到的请求。

Django中的请求

path_info: URL字符串,即当前请求的路径

method: 字符串,表示http的请求方法

GET: QueryDict查询字典的对象,包含get请求方式的所有资源

POST: QueryDict查询字典对象,包含post请求方式的所有数据

FILES: 类似于字典的对象,包含所有的上传文件信息

COOKIES: Python字典,包含当前所有的cookie

session: 类似于字典对象,表示当前会话

body: 字符串,请求体的内容

scheme: 请求协议 httporhttps

request.get_full_path: 请求完整路径

request.META: 请求中的元数据(消息头) request.META['REMOTE_ADDR']可以请求到客户端地址,当然你可以请求META中的任何信息.

响应

响应案例

代码语言:javascript
复制
HTTP/1.1 200 OK  --->起始行
Bdpagetype: 1         ---> header内容
Bdqid: 0xc15b41b2000e57f6
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Thu, 03 Jun 2021 06:20:28 GMT
Expires: Thu, 03 Jun 2021 06:19:36 GMT
Server: BWS/1.1
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=34099_33971_31253_33848_33607_26350_22157; path=/; domain=.baidu.com
Strict-Transport-Security: max-age=172800
Traceid: 1622701228048364826613932802104961685494
X-Ua-Compatible: IE=Edge,chrome=1
Transfer-Encoding: chunked
{"code":200,"username":"Alex"} ---> body内容

常见状态码就不说了…

Django中的响应对象

构造函数格式:

HttpResponse(content=响应体,content_type=响应体数据类型,statue=状态码)

Content-Type类型如下

  • 'text/html': 默认的Html文件
  • 'text/plain': 纯文本
  • 'text/css'”:css文件
  • 'text/javascript' : js文件
  • 'application/json': json传输
  • 'application/xml': XML文件

类型

作用

状态码

HttpResponseRedirect

重定向

302

HttpResponseNotModified

未修改

304

HttpResponseBadRequest

错误请求

400

HttpResponseNotFound

没有对应资源

404

HttpResponseForbidden

请求被禁止

403

HttpResponseServerError

服务器错误

500

GET与Post

无论是Get还是Post,都统一用视图函数接受请求,通过判断request.method区分具体的请求动作.

代码语言:javascript
复制
if request.method == "GET":
    处理GET请求内容
elif request.method == "POST":
    处理POST请求内容

GET处理

  • GET请求动作,一般用与向服务器获取数据
  • 能够产生GET请求的场景:
    • 浏览器输入URL回车后
    • html <a href="地址"?参数=值>
    • form表单中的method为GET

GET请求方式中,如果有数据需要传递给后端服务器,通常会用查询字符串Query String传递[不要传递敏感数据]

  • URL:http://127.0.0.1/login/page1?user=value&password=value

取GET内容的值

代码语言:javascript
复制
request.GET['Key'] # QueryDict
request.GET.get['Key','Value']
request.GET.getlist('Key')

POST处理

  • POST请求动作,一般用与向服务器提交大量/隐私数据
  • 客户端通过表单等POST请求将数据传给服务器

取POST客户端数据

代码语言:javascript
复制
request.POST['Key'] # QueryDict
request.POST.get('Key','Value')
request.POST.getlist('key')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 请求与响应
    • 请求方法
      • Django中的请求
      • 响应
        • Django中的响应对象
        • GET与Post
          • GET处理
            • 取GET内容的值
              • POST处理
                • 取POST客户端数据
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档