request-response
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
主要是处理一个名字多个值的情况,因为对于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 = 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)
2023-08-29 广告