Djando学习记录3

一、请求与响应

1.1 请求:浏览器通过http协议发送给服务器端的数据。

包括协议(http、https及协议号)和请求头,请求体。请求头中为键值对的方式,包含大量信息。请求体中主要包括要发送给服务器的数据(可以无数据)。

请求方法:HTTP1.0有GET,POST,HEAD方法三种,HTTP1.1新增了五种请求方法,OPTIONS,PUT,DELETE,TRACE和CONNECT。
GET:请求指定的页面信息,返回实体主体。
HEAD:类似与GET请求,但是返回的响应中无具体内容,只获取报头(一般调试常用)
POST:提交数据进行处理,数据包括在请求体里。
OPTIONS:允许客户端查看服务器性能。
PUT:从客户端向服务器端传送的数据取代指定文档的内容。
DELETE:请求服务器删除指定界面。
CONNECT:协议中预留给能够将连接方式改为管道方式的代理服务器。
TRACE:回显服务器收到的请求,主要用于测试或者诊断。、

请求实际为django视图函数中的第一个参数,django中有HttpRequest类,django接受到请求后根据请求构建出一个HttpRequest对象并传递给为相应的视图函数。

HttpRequest对象常用方法:
request.path_info:URL字符串。
request.method:HTTP请求方法(‘GET’、'POST’等)
request.GET:若为GET请求,返回一个类字典对象QueryDict,包含get请求的所有数据。
request.POST:若为POST请求,返回一个类字典对象QueryDict,包含post请求的所有数据。
request.FILES:类字典对象,包含上传的所有文件信息。
request.COOKIES:返回字典对象,包含所有的cookie,键值均为字符串。
request.session:类字典对象,表示当前会话。
request.body:字符串,请求体的内容(PUT或POST)
request.scheme:请求协议(http/https)
**request.get_full_path()**请求的完整路径。
request.META:请求中的元数组(消息头)
request.META[‘REMOTE_ADDR’]:客户端IP地址

1.2 响应:接到请求后做相应的处理后返回给浏览器的数据。

起始行为协议及版本号和状态码、响应头、响应体(同请求头,请求体)。
常见状态码:
200请求成功
301永久重定向(资源被永久转移到其他url)
302临时重定向(资源被临时转移到其他url)
404请求的资源(网页)不存在
500内部服务器错误
分类:
1 * * 信息,服务器收到请求,需要继续执行操作。
2 * * 成功,操作被成功接收并处理。
3 * * 重定向,需要进一步操作来完成请求。
4 * * 客户端错误,包含语法错误或无法完成请求。
5 * * 服务器错误,服务器在处理请求的过程中发生了错误。

在django中使用HttpResponse对象返回响应,
HttpResponse(content=响应体,content_type=响应数据类型,status=状态码)

HttpResponse有多个子类,都在django.http中

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

二、GET与POST请求

根据请求方式不同,可设定分发函数,在同一个url下根据请求方式、参数的不同将其分发给不同的函数。

2.1 GET

一般用于向服务器获取数据。

GET也可向服务器传递数据,一般使用查询字符串(Query String)传递,(注意不要传递敏感数据,因为传递后会出现在地址栏),真正传递数据还是使用POST请求。

在django后端拿取数据有以下几种方法。

建议使用request.GET
.get()
可传入默认值,若无此参数则返回设定的默认值,增强程序的1健壮,不易报错。
由于是类字典,,与字典不同,若直接按键取值或使用GET.get()方法,则同名参数只返回最后一个,但若直接打印GET方法,则可打印所有值,也可使用request.GET.getlist()方法获取所有值

2.2 POST

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

若想接受POST请求,则要取消csrf验证,否则将会拒绝客户端发来的POST请求,报403响应。
可在setting.py中的MIDDLEWARE中取消该安全验证,将 'django.middleware.csrf.CsrfViewMiddleware’注释掉即可。
可使用requests模块验证,或者写一个简单的表单

POST_FORM='''
<form method='post' action='/mypage'>
    用户名:<input type='text' name='uname'>
    <input type='submit' value='提交'>
</form>
'''

将其通过GET请求的响应返回,即可输入,输入后点击提交即可发送POST请求。

若使用浏览器抓包动能,除了一个POST 200外,还会显示一个GET 404,这是由于我们未设置网站的图标,故返回404.。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值