Django中的request到底有啥属性
Django中的request到底有啥属性呢
Request
  我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将  HttpRequest对象  作为第一个参数传入该函数。
  我们来看一看这个HttpRequest对象有哪些属性或者方法:
属性:
1  HttpRequest.scheme       请求的协议,一般为http或者https,字符串格式(以下属性中若无特殊指明,均为字符串格式)
2  HttpRequest.body        http请求的主体,二进制格式。
3  HttpRequest.path             所请求页面的完整路径(但不包括协议以及域名),也就是相对于网站根目录的路径。
4  HttpRequest.path_info     获取具有 URL 扩展名的资源的附加路径信息。相对于HttpRequest.path,使用该方法便于移植。
if the WSGIScriptAlias for your application is set to "/minfo", then path might be "/minfo/music/bands/the_beatles/" and path_info would be "/music/bands/the_beatles/".
5  HttpRequest.method               获取该请求的方法,比如: GET   POST .........
6  HttpRequest.encoding             获取请求中表单提交数据的编码。
7  HttpRequest.content_type      获取请求的MIME类型(从CONTENT_TYPE头部中获取),django1.10的新特性。
8  HttpRequest.content_params  获取CONTENT_TYPE中的键值对参数,并以字典的方式表示,django1.10的新特性。
9  HttpRequest.GET                    返回一个 **querydict **对象(类似于字典,本文最后有querydict的介绍),该对象包含了所有的HTTP GET参数
10  HttpRequest.POST                返回一个 **querydict **,该对象包含了所有的HTTP POST参数,通过表单上传的所有  字符  都会保存在该属性中。
11  HttpRequest.COOKIES        返回一个包含了所有cookies的字典。
12  HttpRequest.FILES           返回一个包含了所有的上传文件的  querydict  对象。通过表单所上传的所有  文件  都会保存在该属性中。
                                               key的值是input标签中name属性的值,value的值是一个UploadedFile对象
13  HttpRequest.META                返回一个包含了所有http头部信息的字典
CONTENT_LENGTH – The length of the request body (as a string).
    CONTENT_TYPE – The MIME type of the request body.
    HTTP_ACCEPT – Acceptable content types for the response.
    HTTP_ACCEPT_ENCODING – Acceptable encodings for the response.
    HTTP_ACCEPT_LANGUAGE – Acceptable languages for the response.
    HTTP_HOST – The HTTP Host header sent by the client.
    HTTP_REFERER – The referring page, if any.
    HTTP_USER_AGENT – The client’s user-agent string.
    QUERY_STRING – The query string, as a single (unparsed) string.
    REMOTE_ADDR – The IP address of the client.
    REMOTE_HOST – The hostname of the client.
    REMOTE_USER – The user authenticated by the Web server, if any.
    REQUEST_METHOD – A string such as "GET" or "POST".
    SERVER_NAME – The hostname of the server.
    SERVER_PORT – The port of the server (as a string).
14 HttpRequest.session 中间件属性
15  HttpRequest.site        中间件属性
16  HttpRequest.user       中间件属性,表示当前登录的用户。
   HttpRequest.user实际上是由一个定义在django.contrib.auth.models 中的  user model  类  所创建的对象。
   该类有许多字段,属性和方法。列举几个常用的:        获取更详细信息-->官方文档。
    1  字段:
      username    用户名
first_name
last_name
      email
      password
      groups
      user_permissions,
      is_staff     布尔值,标明用户是否可以访问admin页面
      is_superuser 
      last_login  上一次登陆时间
date_joined 用户创建时间
2 属性
      is_authenticated   布尔值,标志着用户是否已认证。在django1.10之前,没有该属性,但有与该属性同名的方法。
    3  方法
      1  HttpRequest.user.get_username()  注意:方法的圆括号在templates标签中必需省略!!
         获取username。尽量使用该方法来代替使用username字段
      2  HttpRequest.user.get_full_name()  注意:方法的圆括号在templates标签中必需省略!!
         获取first_name和last_name
      3  HttpRequest.user.short_name()  注意:方法的圆括号在templates标签中必需省略!!
         获取first_name
      4  HttpRequest.user.set_password(raw_password)  注意:该方法无法在template标签中使用!!
         设置密码
      5  HttpRequest.user.check_password(raw_password)  注意:该方法无法在template标签中使用!!
         如果raw_password与用户密码相等,则返回True````
方法:
1  HttpRequest.get_host()            返回请求的源主机。example:  127.0.0.1:8000
2  HttpRequest.get_port()            django1.9的新特性。
3  HttpRequest.get_full_path()     返回完整路径,并包括附加的查询信息。example:  "/music/bands/the_beatles/?print=true"
4  HttpRequest.bulid_absolute_uri(location)      返回location的绝对uri,location默认为request.get_full_path()。``
    Example: "https://example.com/music/bands/the_beatles/?print=true"
QueryDict
  是一个类似于Python中字典的一种对象,他是Python中字典的子类,所以继承了字典的所有方法,
  当然QueryDict对字典的某些方法进行了加工,并补充了一些独特的方法。这里列出部分方法。详情请看: 官方文档 。
1  QueryDict.get(key,default=None)   返回key所对应的value,若key不存在,则返回default的值
2  QueryDict.update(other_dict)   更新
3  QueryDict.values()   列出所有的值
4  QueryDict.items()   列出所有的键值对,若一个key有多个值,只显示最后一个值。
5  QueryDict.pop(key)   删除某个键值对
6  QueryDict.getlist(key)   根据输入的key返回一个Python中的list
7  QueryDict.dict()   返回QueryDict的字典的表现形式
DRF 中的request
常用属性:
request.data post请求过来时获取数据,类似于标准
request.POST和request.FILES属性,除了:
- 它包括所有已解析的内容,包括文件和非文件输入。
 - 它支持解析除以外的HTTP方法的内容
 POST,这意味着您可以访问PUT和PATCH请求的内容。- 它支持REST框架的灵活请求解析,而不仅仅是支持表单数据。例如,您可以以处理传入表单数据的相同方式处理传入JSON数据。
 request.query_params get请求过来时获取拼接数据
request.auth 用于验证身份,主要取决于所使用的身份验证方式
request.method 返回请求的HTTP方法的大写字符串表示形式
request.content_type 返回代表HTTP请求主体的媒体类型的字符串对象,如果未提供媒体类型,则返回空字符串
Django中的request到底有啥属性的更多相关文章
- Django中的Request和Response
		
接触Django这么久了,从来没有好好学习关于Django中的Request和Response对象.借着文件上传下载的相关工作,现在总结一下也不错. 当一个页面请求过来,Django会自动创建一个Re ...
 - 【转】Django中的request与response对象
		
关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...
 - django中的request对象详解
		
Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函数. 我们来看一看这个HttpRequest对 ...
 - Django中的request对象组成
		
if request.REQUEST.has_key('键值'): HttpRequest对象的属性 参考: 表 H-1. HttpRequest对象的属性 属 性 描述 path 表示提 ...
 - django中的request对象
		
Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函数. 我们来看一看这个HttpRequest对 ...
 - django中request对象详解(转载)
		
django中的request对象详解 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函数. ...
 - django中HttpRequest请求
		
视图的第一个参数必须是HttpRequest对象 在视图函数中,接收的request有如下属性: path:一个字符串,表示请求的页面的完整路径,不包含域名. method:一个字符串,表示请求使用的 ...
 - django 中的视图(Views)
		
Views Django中views里面的代码就是一个一个函数逻辑, 处理客户端(浏览器)发送的HTTPRequest, 然后返回HTTPResponse, http请求中产生两个核心对象: http ...
 - Restframework中的Request
		
1.介绍 该篇博客主要介绍restframework内置的Request类,它扩展了Django中的Request类,实现了很多方便的功能--如请求数据解析和认证等. 如: 在APIView中封装的r ...
 
随机推荐
- css布局相关:涉及到常见页面样式难点
			
一.display:table用法 Table:display:tableBody:table-row-group;Tr: table-row;Td: table-cell https://www.c ...
 - C# .net framework .net core 3.1 请求参数校验, DataAnnotations, 自定义参数校验
			
前言 在实际应用场景中我们常常要对接口的入参进行校验, 例如分页大小是否正确, 必填参数是否已经填写等等. 最简单的实现方式如下图, 这种在实际开发中代码过于冗余, 而且不灵活. 今天介绍一种统一参数 ...
 - react中使用decorator 封装context
			
2020-03-27 react中使用decorator 封装context 在传统的react context中,子组件使用context十分繁琐,如果需要使用context的子组件多的话 每个组件 ...
 - 匿名实现类&匿名对象
			
学习过程中经常搞不清匿名类&匿名对象怎么用,今天就把常用的方式总结一遍. 1.创建了非匿名实现类的非匿名对象 //定义USB接口 interface USB{ void inputInofo( ...
 - 【Flutter实战】图片组件及四大案例
			
老孟导读:大家好,这是[Flutter实战]系列文章的第三篇,这一篇讲解图片组件,Image有很多高级用法,希望对您有所帮助. 图片组件是Flutter基础组件之一,和文本组件一样必不可少.图片组件包 ...
 - Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式
			
导致OutOfMemoryError异常的常见原因有以下几种: 内存中加载的数据量过于庞大,如一次从数据库取出过多数据: 集合类中有对对象的引用,使用完后未清空,使得JVM不能回收: 代码中存在死循环 ...
 - 效率思维模式与Zombie Scrum
			
Scrum是由Ken Schwaber和Jeff Sutherland在20世纪90年代提出的概念,并在1995年首次正式确定.起初Scrum是为了解决产品和软件开发固有的复杂性,然而现在Scrum被 ...
 - 经典卷积神经网络算法(5):ResNet
			
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
 - Project Loom:Reactive模型和协程进行时(翻译)
			
Java 15将发布Project Loom的第一个版本.我相信这将改变JVM.在这篇文章中,我想深入探讨一下导致我相信这一点的原因. 首先,我们需要了解核心问题.然后,我将尝试描述以前的技术如何解决 ...
 - Spring Aware介绍
			
读完这篇文章你将会收获到 Aware 的使用和介绍 BeanFactoryAware 的触发时机 ApplicationContextAware 的触发时机以及它通过扩展 BeanPostProces ...