请求与响应对象

HttpRequest

HttpRequest存储了客户请求的相关参数和一些查询方法。

  • path

请求页面的全路径,不包括域名—例如, "/hello/"。

  • method

Http请求方法,包括'GET','POST'。

  • GET

QueryDict类实例,包含所有HTTP GET参数的字典对象。

  • POST

QueryDict类实例,包含所有HTTP POST参数的字典对象。

  • REQUEST

为了方便,该属性是POST和GET属性的集合。

  • COOKIES

包含所有Cookies的标准Python字典对象,Keys和Values都是字符串。

HttpRequest.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)

返回签名过的Cookie 对应的值,如果签名不再合法则返回django.core.signing.BadSignature。如果提供default 参数,将不会引发异常并返回default 的值。

可选参数salt可以用来对安全密钥强力攻击提供额外的保护。

max_age参数用于检查Cookie 对应的时间戳以确保Cookie 的时间不会超过max_age秒。

HttpRequest.session.set_test_cookie() 设置测试cookie,检验客户端是否支持cookie

HttpRequest.session.test_cookie_worked() 检测测试cookie,客户端支持时返回True。

在set_test_cookie的同一次请求-响应中test_cookie_worked的结果是不可靠的。

  • FILES

包含所有上传文件的类字典对象。

FILES中的每个Key都是<input type="file" name="" />标签中name属性的值,FILES中的每个value 同时也是一个标准Python字典对象,包含3个Key:

"filename"

"content-type"

"content"

  • META

包含所有可用HTTP头信息的字典,其中的Key包括:

HTTP_ACCEPT_ENCODING

HTTP_ACCEPT_LANGUAGE

HTTP_HOST: 客户发送的HTTP主机头信息

HTTP_REFERER: referring页

HTTP_USER_AGENT: 客户端的user-agent字符串

HTTP_X_BENDER: X-Bender头信息

  • session

可读写的session对象

  • raw_post_data

原始的POST数据

  • 其它

HttpRequest.is_secure()请求是否由Https协议发起

HttpRequest.is_ajax() 请求是否由Ajax协议发起

QueryDict

HttpRequest中的GET和POST属性都是django.http.QueryDict类的实例,它是dict派生类。提供了对一键多值的支持和相关操作方法。

HttpResponse

  • content

HttpResponsee.content是存储响应内容的字符串,

  • item

HttpResponse.__setitem__(header, value) 设置响应头属性

HttpResponse.__delitem__(header) 删除响应头属性

HttpResponse.__getitem__(header) 访问响应头属性

HttpResponse.has_header(header) 检查是否存在响应头属性

  • cookie

HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False) 设置cookie

HttpResponse.delete_cookie(key, path='/', domain=None) 删除cookie

HttpResponse.set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=True) 使用带有密钥签名的数据

JsonResponse

JsonResponse是HttpResponse的子类,用于生成一个Json格式而非html/xml的响应。

JsonResponse.__init__(data, encoder=DjangoJSONEncoder, safe=True, **kwargs)

在safe参数为True时,只接受dict对象作为参数,并将Dict作为Json字符串;在safe=False时使用ncoder=django.core.serializers.json.DjangoJSONEncoder参数指定的encoder。

from django.http import JsonResponse

def test_json(request):
response = JsonResponse({'foo': 'bar'})
return response

TemplateResponse

Django请求响应对象的更多相关文章

  1. Django请求,响应,ajax以及CSRF问题

    二.request对象常用属性: Attribute Description path 请求页面的全路径,不包括域名端口参数.例如: /users/index method 一个全大写的字符串,表示请 ...

  2. DRF对Django请求响应做了技术升级

    Django视图是用来处理请求和响应的,Django默认是按Form和Template来设计的,如果要处理以JSON格式为主的RESTful API,那么就需要对Django请求和响应的处理代码进行优 ...

  3. request和response——请求响应对象

    请求对象--request 获取get请求的值 一次请求,返回一个响应. 地址栏:http://127.0.0.1:8000/day3/get_request?lan=python 问号:代表请求参数 ...

  4. django返回响应对象

    Django的视图必须要返回一个HttpResponse对象(或者其子类对象),不能像flask一样直接返回字符串. Django: return HttpResponse("Hello&q ...

  5. django之三剑客、静态文件配置、请求响应对象、数据库操作

    三剑客 from django.shortcuts import render,HttpResponse,redirect HttpResponse # 返回字符串 render(response, ...

  6. 关于Tomcat中封装请求-响应的结构的分析

    在编写Servlet时,往往只重写了doGet和doPost方法,使用Tomcat通过(HttpServletRequest 和 HttpServletResponse)接口传递来的request和r ...

  7. 基于请求响应的MVC框架调用分析

    一.使用Servlet来处理请求响应 当client提交数据之后.接着发送请求,请求被封装成对象,server接收到请求,依据请求的URL.来推断将请求对象交由哪个Servlet处理. 在servle ...

  8. django 获取request请求对象及response响应对象中的各种属性值

    django request对象和HttpResponse对象 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) HttpRequest.scheme 请求方案 ...

  9. Django视图函数之request请求与response响应对象

    官方文档: https://docs.djangoproject.com/en/1.11/ref/request-response/ 视图中的request请求对象: 当请求页面时,Django创建一 ...

随机推荐

  1. 测试一下你的T-SQL基础知识-subquery

    一直以为自己SQL挺好的,没有想到今天在重构存储过程遇到了一个子查询的问题,修改为自连接之后发现居然结果不对,于是有了下面的测试.假设表中有如下数数据,请问Query1,Query2,Query3的查 ...

  2. asp.net Ibatis.net 批量插入数据ORACLE

    在开发中我们有时会遇到需要批量插入数据,最普通的就是每次 插入一条.但是当数据量大道一定的地步会很影响性能.下面例子示范了ibatis.net批量插入 ibatis.net 的XML文件里面使用ite ...

  3. Python面向对象(成员修饰符)

    day25 成员修饰符 class Foo: def __init__(self, name, age): self.name = name self.__age = age#私有,外部无法直接访问 ...

  4. POJ 3468A Simple Problem with Integers(线段树区间更新)

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 112228 ...

  5. rocketmq学习

    官网地址 安装name server和broker git clone https://github.com/apache/incubator-rocketmq.git cd incubator-ro ...

  6. [Swift实际操作]七、常见概念-(2)点CGPoint和变形CGAffineTransform的使用

    本文将为你演示点对象CGPoint的使用,其中CG表示来自CoreGraphic(核心图形)这个跨平台框架 首先导入需要使用的两个框架第一个框架表示界面工具框架第二个框架表示核心绘图和动画框架 imp ...

  7. ionic的基础学习(第一篇)

    1.ioinc的头部与底部 1.Header 固定在屏幕的顶端的组件,可包含标题,左右的功能按钮.(提供很多颜色的样式,及调用不同的样式名,亦可自定义) bar-light,bar-stable,ba ...

  8. Java抽象工厂模式

    Java抽象工厂模式 基本定义 抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的.抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象 ...

  9. Requests库入门实例

    爬虫入门5个实例 实例1:京东商品页面的爬取 import requests def getHTMLText(url): try: r = requests.get(url,timeout = 30) ...

  10. js时间的应用(再看看前面,会发现不一样的)

    1.年份(1970-) 获取 date.getFullYear(); 设置 date.setFullYear(2016); 2.月份(0-11) 0代表1月 获取 date.getMonth() 设置 ...