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

零、绪论:

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. 关于“Could not open ServletContext resource [/WEB-INF/applicationContext.xml]”解决方案

    问题说明,我在web.xml文件中进行了如下配置 <servlet> <servlet-name>dispatcherServlet</servlet-name> ...

  2. Jquery easyUI datagrid载入复杂JSON数据方法

    1.JSON数据为: {     "total":28, "rows": [     {       "itemNo": "1&q ...

  3. Linux下编译、使用静态库和动态库 自己测过的

    每个程序实质上都会链接到一个或者多个的库.比如使用C函数的程序会链接到C运行时库,GUI程序会链接到窗口库等等.无论哪种情况,你都会要决定是链接到静态库(static libary)还是动态库(dyn ...

  4. atitit.seo 发帖关键词以及链接的制作.doc

    atitit.seo 发帖关键词以及链接的制作.doc 1. 关键词的获得(by cate) 1 1.1. 删除统计数量     Cartier(144)  格式 1 1.2. \(\d*\)  替换 ...

  5. 【Android】16.0 第16章 自定义服务和系统服务—本章示例主界面

    分类:C#.Android.VS2015: 创建日期:2016-03-01 一.简介 本章主要演示Started Service.带Intent过滤器的Started Service.IntentSe ...

  6. angularjs 构建主页 内置过滤器、日期的格式化

    从构建负责管理主屏幕的 MainController 开始.在这个 MainController 控制器内,只需设置一个每秒运转一次,同时更新一个局部作用域变量的延时 angular.module(' ...

  7. Qt打开文件对话框

    项目中需要打开文件对话框,就查了一下,不得不说Qt的帮助文档做的真好,非常详细.要实现这个功能有两种方式,使用QFileDialog的静态方法,实例化QFileDialog对象. 基本算是照抄帮助文档 ...

  8. 基础地图Android SDK

    开发者可利用SDK提供的接口,使用百度为您提供的基础地图数据.目前百度地图SDK所提供的地图等级为3-21级,所包含的信息有建筑物.道路.河流.学校.公园等内容. V3.7.0起,地图支持缩放至21级 ...

  9. Linux动态库开发

    http://blog.csdn.net/qq_33850438/article/details/52014399 ### 导出符号------------------------------ 默认所 ...

  10. 搭建springmvc框架的另一种思路

    在一个完整的项目里搭建springmvc框架的时候, 通常情况下,初学者在配置的时候,总是会把"中央控制器的名字"-servlet.xml文件放到/Webroot/WEB-INF下 ...