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("

Here's the text of the Web page.

")
response.write("

Here's another paragraph.

")

使用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)

子类

你可能感兴趣的:(request-response)