栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django从0到1

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django从0到1

请求及响应 序号方法描述1GET请求指定的页面信息 并返回实体主体2HEAD类似于GET请求 只不过返回的响应中没有具体的内容 用于获取报头3POST向指定资源提交数据进行处理请求 例如提交表单或者上传文件 。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有的资源要修改4PUT从客户端向服务器传送的数据取代指定的文档的内容5DELETe请求服务器删除指定的页面6CONNECTHTTP/1.1 协议中预留给能供将连接改为管道方式的代理服务器7OPTIONS允许客户端查看服务器的性能8TRACE回显服务器收到的请求 主要用于测试或诊断 Django中的请求 请求在Django中实则就是 视图函数的第一个参数request 即 HttpRequest对象Django接收到http协议的请求后 会根据请求数据报文创建HttpRequest对象HttpRequest对象 通过属性描述了请求的所有相关信息

​ request.xxx

path_info URL字符串

method 字符串 表示HTTP请求方法 常用值 GET 、 POST

GET QueryDict查询字典的对象 包含GET请求方式的所有数据

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

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

cookieS python字典 包含所有的cookies 键和值都为字符串

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

body 字符串 请求体的内容 POST或PUT

scheme 请求协议 http/https

request.get_full_path() 请求的完整路径

request.meta 请求中的元数据 消息头

request.meta[ REMOTE_ADDR ] 客户端的IP地址
#http://127.0.0.1:8000/test_request?a 1 b 1
print( !path info is ,request.path_info)
print( !method is ,request.method)
print( !querystring is ,request.GET)
print( !full path is ,request.get_full_path())
!path info is /test_request
!method is GET
!querystring is QueryDict: { a : [ 1 ], b : [ 1 ]} 
!full path is /test_request?a 1 b 1
Django中的响应

响应状态码

200 - 请求成功301 - 永久重定向-资源 网页等 被永久转移302 - 临时重定向404 - 请求的资源 网页等 不存在500 - 内部服务器错误 分类分类描述1**信息 服务器收到请求 需要请求者继续执行操作2**成功 操作被成功接收并处理3**重定向 需要进一步的操作以完成请求4**客户端错误 请求包含语法错误或无法完成请求5**服务器错误 服务器在处理请求的过程中发生了错误 Django中的响应对象

构造函数格式:

​ HttpResponse(content 响应体,content_type 响应体数据类型(默认为html),status 状态码(默认为200))

作用

​ 向客户端浏览器返回响应 同时携带响应体内容

常用的Content-Type

text/html 默认 html文件 text/plain 纯文本 text/css css文件 text/javascript js文件 multipart/form-data 文件提交 application/json json传输 application/xml xml文件 HttpResponse子类

from django.http import HttpResponsexxx

类型作用状态码HttpResponseRedirect重定向302HttpResponseNotModified未修改304HttpResponseBadRequest错误请求400HttpResponseNotFound没有对应的资源404HttpResponseForbidden请求被禁止403HttpResponseServerError服务器错误500

def test_request(request):
 print( !path info is ,request.path_info)
 print( !method is ,request.method)
 print( !querystring is ,request.GET)
 print( !full path is ,request.get_full_path())
 return HttpResponseRedirect( /page/1 )

当访问 http://localhost/test_request 时 会跳转到 http://localhost/page/1

GET和POST请求

无论是GET还是POST 通以都由视图函数接受请求 通过判断 request.method 区分具体的请求动作

if request.method GET :
 处理GET请求时的业务逻辑
elif request.method POST :
 处理POST请求的业务逻辑
else:
 其他请求业务逻辑
GET处理

GET请求动作 一般用于向服务器获取数据

能够产生GET请求的场景

浏览器地址栏中输入URL 回车后 a href 地址?参数 值 参数 值 from表单中的method为GET

方法

request.GET[ 参数名 ] .GET是一个 QueryDict

request.GET.get( 参数名 , 默认值 ) 返回某个参数的值 若此参数不存在 则返回一个默认值

request.GET.getlist( 参数名 ) 获取某个参数的所有值 返回值是一个列表

POST处理 POST 一般用于向服务器提交大量/隐私数据客户端通过**表单(form)**等POST请求将数据传递给服务器端

服务器端接收参数

通过 request.method 来判断请求是否是 POST

使用POST方式接收客户端数据

取消CSRF验证 否则Django会拒绝客户端发来的POST请求 报错403

settings.py 中 取消CSRF验证

Django处理 GET 请求

✔️查询字符串 - 少量数据传递 切记不能传输敏感数据

Django处理 POST 请求

✔️ 专用于浏览器提交数据

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/266861.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号