request-response

 我来答
一袭可爱风1718
2022-07-14 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6582
采纳率:99%
帮助的人:37.3万
展开全部

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)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式