HTTP协议,ajax上传文件

关于写session:
自己写session的时候,最好是存id值, 这样可以从session表拿user_id,然后到user中那其他的字段
使用auth模块的时候,是auth模块封装好的写session,取值的时候直接request.user,就能拿到user对象

HTTP协议:(爬虫***)书:计算机网络
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

TCP是对传输数据的方法做限制,HTTP是对内容做限制。

HTTP协议的特点:
HTTP基于请求/响应模式

1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
每种方法规定了客户与服务器联系的类型不同。

2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

3.无连接:无连接的含义是限制每次连接只处理一个请求。
服务器处理完客户的请求,并收到客户的应答后,在一个很短的时间内保持连接。采用这种方式可以节省传输时间。

4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。
所以要用cookie session来判断当前的状态

浏览器---请求协议(数据格式)---》服务端
浏览器《---响应协议(数据格式)---服务端


请求协议:
请求首行 GET url
请求头 key:value
key:value
\r\n\r\n -->空行
请求体

get和post的区别:
get请求没有请求体,数据放在url后面,?分割,默认是8k的大小
post请求,数据放在请求体中,没有数据大小的限制
get请求的的数据放在url中,并不安全,post相对get安全一些


响应协议:
响应首行 GET url
响应头 key:value
key:value
\r\n\r\n -->空行
响应体

常见状态码
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常



requests 模块,爬虫应用
import request
ret = request.get("url") --> get请求
ret = request.post("url") --> post请求
ret.text --> 拿到get/post后返回的内容


form表单上传文件:
<form action="/index/" method="/post/" enctype="设置HTTP提交数据的方式">
{% csrf_token %}
</form>


form表单提交数据的时候
enctype="" --> 影响的是请求头的contentType
默认“application/x-www-form-urlencoded”;-->只支持表单
当提交的是文件时,就需要使用“multipart/form-data”编码类型。 -->支持表单和文件

取文件--->
file_obj = request.FILES.get("name") --> 拿到文件类型的对象
file_name = file_obj.name


AJAX上传文件:
<form action="/index/">
{% csrf_token %}

</form>


var $formData = new FromData(); --> 实例化FromData对象,存放form表单的数据,键值对的形式存放
$formData.append("user",$("#user").val()) ---> 把表单数据添加进去
$formData.append("cFile",$("#file")[0].files[0]) ---> 取到文件的内容,添加数据

$.ajax({
url: "/URL/",
type: "POST",
data: $formData,

processData: false, --> 声明当前的data数据是否要进行转码或预处理,True--> 做预处理,False--> 不做预处理,直接传数据
contentType: false, --> 不做任何的编码

headers:{"X-CSRFToken":$("[name='csrfmiddlewaretoken']").val()},

success: function(data){
console.log("aaa")
}
})

取文件--->
file_obj = request.FILES.get("name") --> 拿到文件类型的对象
file_name = file_obj.name











posted @ 2017-12-13 19:30  chitalu  阅读(273)  评论(0)    收藏  举报