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

零、绪论:

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

一、获取请求数据:

1、POST和GET类型

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

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

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

3、文件类型:

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

4、请求头部字段:

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

5、session和cookies

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

6、user

 #AUTH_USER_MODEL 的一个实例对象
#用来表明当前用户,匿名用户时候则为id为None,username为空字符串。
#常见的字段:id username group password
is_active
is_staff
is_superuser
#常见的函数:
is_authenticated()
is_anonymous()
set_password()
check_password()
get_username()
save()
delete()

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

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

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

 HttpRequest.get_host()
HttpRequest.get_full_path()
HttpRequest.get_build_absolute_uri()
#HttpRequest.get_signed_cookie()
HttpRequest.is_secure()#是否是HTTPS
HttpRequest.is_ajax()#是否为Ajax请求
HttpRequest.read()
HttpRequest.readline()
HttpRequest.readlines()
HttpRequest.xreadlines()

Django学习笔记第二篇--关于请求获取的更多相关文章

  1. ASP.NET Core 学习笔记 第二篇 依赖注入

    前言 ASP.NET Core 应用在启动过程中会依赖各种组件提供服务,而这些组件会以接口的形式标准化,这些组件这就是我们所说的服务,ASP.NET Core框架建立在一个底层的依赖注入框架之上,它使 ...

  2. js学习笔记第二篇

    Js笔记整理 1.StringAPI a)        大小写转换:str.toUpperCase();str.toLowerCase(); b)        获取指定位置字符: Str[i]-- ...

  3. Node 之 Express 学习笔记 第二篇 Express 4x 骨架详解

    周末,没事就来公司加班继续研究一下Express ,这也许也是单身狗的生活吧. 1.目录结构: bin, 存放启动项目的脚本文件 node_modules, 项目所有依赖的库,以及存放 package ...

  4. Android学习笔记(第二篇)View中的五大布局

    PS:人不要低估自己的实力,但是也不能高估自己的能力.凡事谦为本... 学习内容: 1.用户界面View中的五大布局... i.首先介绍一下view的概念   view是什么呢?我们已经知道一个Act ...

  5. Asp.net core Identity + identity server + angular 学习笔记 (第二篇)

    先纠正一下第一篇的的错误. 在 Login.cshtml 和 Login.cshtml.cs 里, 本来应该是 Register 我却写成 Login . cshtml 修改部分 <form a ...

  6. R学习笔记 第二篇:矩阵、数组和列表

    向量是一维的,只有长度(行),没有其他维度.R中存在更高维度的对象,他们是矩阵,数据框,数组.这些对象的下标都是使用中括号[],第一个维度是row,第二个维度是column,依次类推,[row,col ...

  7. Django学习笔记第九篇--实战练习五--关于数据的改、删操作、数据库字段属性的设置和类视图

    一.首先上代码.关于类视图: class register(View): #template_name = "templates/register.html" def get(se ...

  8. Django学习笔记第一篇--Hello,Django

    一.Django的安装: 1.python虚拟运行的环境的安装以及安装django: sudo pip install virtualenv export VIRTUALENV_DISTRINUTR= ...

  9. Vue.js学习笔记 第二篇 样式绑定

    Class绑定的对象语法 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

随机推荐

  1. Linux下从视频提取音频的方法

    Linux下可以利用mencoder将视频里的音频提取出来.方法如下: 1.首先安装mencoder.对于Ubuntu来说,软件仓库里就有mencoder,可直接输入如下命令安装 sudo apt-g ...

  2. Ubuntu14.04单机版kubernetes安装指导

    转:http://dockone.io/article/950 概述本文主要讲述如何在Ubuntu系统上安装kubernetes,网络上也有许多相关的文章,感觉都不是很清晰,这里我将自己的安装实践给大 ...

  3. [Jobdu] 题目1377:缓变序列

    题目描述: 陈博在写论文时碰到一个难题:如何将给定的整数序列变换成缓变序列:即任意两个相邻的元素相差均为1,第1个元素和最后一个元素相差也为1. 变换是指改变原整数序列中各元素的顺序.例如整数序列1, ...

  4. docker使用问题总结

    1. docker报[Error response from daemon: Error running DeviceCreate (createSnapDevice) dm_task_run fai ...

  5. sphider 丁廷臣简体中文完美汉化版带蜘蛛搜索引擎程序 v1.3.4

    sphider 丁廷臣简体中文完美汉化版带蜘蛛搜索引擎程序 v1.3.4是最官方的新版,免费开源,用官方最新发布原版汉化.未更改任何内核文件. Sphider 是一个完美的带有蜘蛛的搜索引擎程序. S ...

  6. nohu和&

    在第一家公司工作的时候, 我认识了&,在第二家公司工作的时候, 我认识了nohup,  这就是渊源.  随后, 我就一直糊涂用他们, 但并不懂这两个东西. 网上很多地方是乱扯, 瞎复制, 为什 ...

  7. 导出word功能,用html代码在word中插入分页符

    <span lang=EN-US style="font-size:10.5pt;mso-bidi-font-size:12.0pt;font-family:" mce_st ...

  8. C++链接ODBC数据源:VS2013,Access

    参考资料:1.http://wenku.baidu.com/view/a92d1a812cc58bd63186bd8d.html 2.http://blog.sina.com.cn/s/blog_68 ...

  9. windows7环境下使用pip安装MySQLdb

    1.首先,需要确定你已经安装了pip.在Python2.7的安装包中,easy_install.py和pip都是默认安装的.可以在Python的安装目录先确认,如果\Python27\Scripts里 ...

  10. dfs带状态改变的做法

    所谓带状态改变是指:在搜索到某个位置的时候,状态发生改变,继续计算步数. 给一个例题: 蒜头君要回家,但是他家的钥匙在他的朋友花椰妹手里,他要先从花椰妹手里取得钥匙才能回到家.花椰妹告诉他:“你家的钥 ...