Django学习笔记第二篇--关于请求获取

#细节都在代码段里面讲解

零、绪论:

HTTP协议是一种请求响应的协议,一次请求一次响应。所以这部分的讲解将分为三个部分:请求获取,分析处理、返回响应。

一、获取请求数据:

1、POST和GET类型

1 #GET/POST
2 request.GET["para_name"]
3 request.POST["para_name"]
4 #都是字典可以使用get方法
5 #对于方法的选择:
6 HttpRequest.method==GET#或者POST或者其他

2、其他类,例如PUT和DELETE,其他的也不多了,OPTIONS 不带数据

1 put = QueryDict(request.body)
2 key = put.get('key')
3 field = put.get('field')
4 field_value = put.get('field-value')
5 
6 #把request.body也就是请求报文体,结构化成QueryDict,看情况,有时候数据体部分也可能是json化的。delete同理

3、文件类型:

 1 #FILES:
 2 fileobject = request.FILES.get("para_name")
 3 filename = fileobject.name
 4 filesize = fileobject.size
 5 filetype = fileobject.content_type
 6 filecontent = fileonject.read
 7 filecharset =fileobject.charset
 8 #上传文件配置限制:
 9 FILE_UPLOAD_MAX_MEMORY_SIZE
10 #直接读入内存的最大上传文件大小(字节数)。当大于此值时,文件存放到磁盘。默认2.5M字节
11 FILE_UPLOAD_TEMP_DIR
12 FILE_UPLOAD_PERMISSIONS#权限
13 FILE_UPLOAD_HANDLERS 
14 #对于表单上传文件的一个简单处理:
15 def handle_uploaded_file(f):
16     destination = open('some/file/name.txt','wb+')
17     for chunk in f.chunks(): 
18         destination.write(chunk)
19     destination.close()

4、请求头部字段:

1 head = request.META
2 #这是一个字典,所有和请求甚至和响应有关的上下文结构都在里面,所以头部字段也在里面
3 #例如想要取出user-agent
4 useragent = head["HTTP_USER_AGENT"]

5、session和cookies

1 #cookie直接获取cookie是一个字典
2 cookie = request.COOKIES
3 csrftoken = cookie["csrftoken"]
4 #session也是一个字典结构:
5 request.session["admin"]
6 request.session.get("admin")
7 #对这些的cookie和session的处理我们将在数据处理部分做介绍

6、user

 1 #AUTH_USER_MODEL 的一个实例对象
 2 #用来表明当前用户,匿名用户时候则为id为None,username为空字符串。
 3 #常见的字段:id username group password
 4 is_active
 5 is_staff
 6 is_superuser
 7 #常见的函数:
 8 is_authenticated()
 9 is_anonymous()
10 set_password()
11 check_password()
12 get_username()
13 save()
14 delete() 

7、其他请求上下文属性:

1 HttpRequest.scheme#协议,一般为http或者https
2 HttpRequest.body#数据部分,可以使用HttpRequest.read()获取
3 HttpRequest.path(path_info)#关于请求的路径部分信息
4 HttpRequest.encoding#请求的编码方式
5 HttpRequest.REQUEST#一个字典,相当于POST和GET的字典合集

8.关于上下文的一些方法:

 1 HttpRequest.get_host()
 2 HttpRequest.get_full_path()
 3 HttpRequest.get_build_absolute_uri()
 4 #HttpRequest.get_signed_cookie()
 5 HttpRequest.is_secure()#是否是HTTPS
 6 HttpRequest.is_ajax()#是否为Ajax请求
 7 HttpRequest.read()
 8 HttpRequest.readline()
 9 HttpRequest.readlines()
10 HttpRequest.xreadlines()
原文地址:https://www.cnblogs.com/KevinGeorge/p/8328763.html