request-response

request

基础属性

scheme body(原始的请求体) POST(对应可转换的内容)
另外提供了read这样的文件类接口使用

path(请求的完整路径不包含模式和域名) path_info(对于一些服务器,把域名后的url分成了脚本前缀部分和路径信息部分 path_info肯定是全部的)
使用path_info总是能拿到域名后的完整的url

method(方法名 大写) encoding(默认用utf-8 在DEFAULT_CHARSET,可以改变encoding的值再获取GET POST) content_type(字符类型拿请求头部的CONTENT_TYPE) content_params(字典类型拿请求头部的CONTENT_TYPE)

GET POST body FILES COOKIES
META(所有的头部 会转换名字 都搞成大写的下划线分割的同时有HTTP_的前缀)

resolver_match是对应ResolverMatch的实例,代表解析得的URL,在view中可用,但是在解析之前的middleware是获取不到的

应用属性

current_app 用于url template tag,在reverse函数的current_app参数

urlconf 用于root url conf而不是用ROOT_URLCONF中的设置

中间件属性

session 由SessionMiddleware设置 可读可写 字典类
site 由CurrentSiteMiddleware设置 是Site或RequestSite的实例,是通过get_current_site来获取的
user 由AuthenticationMiddleware设置 是AUTH_USER_MODEL对应的实例代表当前登录的用户,未登录的获取的是AnonymousUser,可通过request.user.is_authenticated来判断

方法

get_host 获得请求的主机 通过HTTP_X_FORWARDED_HOST否则用HTTP_HOST,都没有则使用SERVER_NAME和SERVER_PORT的组合

get_full_path 获得path加查询字符串query_string

build_absolute_uri(location) 将location转换为绝对地址,location不传入时用的是get_full_path获取,如果已经是绝对地址则不修改,用的是请求中的服务信息,例如http和https的设置

get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None) 返回一个签名的cookie值,或抛出BadSignature异常,如果设置了default则返回该值而不抛出异常,可以加盐,可以设置过期

is_secure 查看是否https

is_ajax 查看是否Ajax请求,即查看头部的HTTP_X_REQUESTED_WITH

read readline readlines xreadlines iter

QueryDict

主要是处理一个名字多个值的情况,因为对于HTML中的form元素,多选的,都是相同的名字,不同的值

通过GET POST获取的都是不可修改的,可以使用.copy()来获取可修改的版本

实现了标准字典的所有方法

QueryDict.init(query_string=None, mutable=False, encoding=None)

classmethod QueryDict.fromkeys(iterable, value='', mutable=False, encoding=None)

QueryDict.getitem(key) 如果对应多个值 返回最后一个

QueryDict.setitem(key, value) 设置值 value应为列表

QueryDict.contains(key) 判断是否包含

QueryDict.get(key, default=None) 返回对应的值 没有则返回default

QueryDict.setdefault(key, default=None) 没有值则设置为default

QueryDict.update(other_dict)

QueryDict.items()

QueryDict.iteritems()

QueryDict.iterlists()

QueryDict.values()

QueryDict.itervalues()

QueryDict.copy()

QueryDict.getlist(key, default=None)

QueryDict.setlist(key, list_)

QueryDict.appendlist(key, item)

QueryDict.setlistdefault(key, default_list=None)

QueryDict.lists()

QueryDict.pop(key)

QueryDict.popitem()

QueryDict.dict()

QueryDict.urlencode(safe=None)

response

直接传递字符串
response = HttpResponse("Here's the text of the Web page.")

增量内容
response = HttpResponse()
response.write("<p>Here's the text of the Web page.</p>")
response.write("<p>Here's another paragraph.</p>")

使用StreamingHttpResponse来消费可迭代对象

按字典使用来设置HTTP头部
response["Accept"] = "json"
del response['Age']

告诉浏览器返回的response是文件

response = HttpResponse(my_data, content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename="foo.xls"'

属性

content charset status_code reason_phrase streaming closed

方法

HttpResponse.init(content='', content_type=None, status=200, reason=None, charset=None)

setitem delitem getitem
has_header setdefault

set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)

set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False)

delete_cookie(key, path='/', domain=None)

write(content) flush() tell() getvalue() readable() seekable() writable() writelines(lines)

子类

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272

推荐阅读更多精彩内容

  • 利用HTTP协议向服务器传参的几种途径、响应、Cookie、Session、类视图、中间件 注意: 1>Dja...
    Cestine阅读 1,168评论 0 2
  • 1. 请求 request 1.1 HttpRequest 定义 服务器在接收到http请求后,会根据报文创建H...
    十二右阅读 1,154评论 0 0
  • Django教程 Python是我学习的第一门编程语言,这两天刚刚学完python的WEB-django框架,参考...
    逐梦公子阅读 720评论 0 0
  • 一、概要 视图可以一个python函数,可以叫视图函数,或者简称视图,也可以是是一个类,定义在views.py 文...
    唯老阅读 434评论 0 8
  • 1,HttpRequest知识总结 定义: 服务器接收到http协议的请求后,会根据报文创建HttpRequest...
    晓可加油阅读 1,221评论 1 2