Flask的request获取参数原理
之前对WSGI及请求上下文进行了学习,
Flask上下文
,
WSGI
,现在就介绍一下request获取参数的原理。
request用法如下:
request.args
request.form
request.files
........
request的args请求方式:
@cached_property
def args(self):
"""The parsed URL parameters. By default an
:class:
~werkzeug.datastructures.ImmutableMultiDict
is returned from this function. This can be changed by setting
:attr:
parameter_storage_class
to a different type. This might
be necessary if the order of the form data is important.
"""
return url_decode(wsgi_get_bytes(self.environ.get('QUERY_STRING', '')),
self.url_charset, errors=self.encoding_errors,
cls=self.parameter_storage_class)
QUERY_STRING :如果服务器与CGI程序信息的传递方式是GET,这个环境变量的值即使所传递的信息。这个信息经跟在CGI程序名的后面,两者中间用一个问号'?'分隔。
也就是说,当调用request.args.get方法时,会通过QUERY_STRING参数获得表单信息。
request.method是通过'REQUEST_METHOD'参数(保存在environ变量中):
method = environ_property(
'REQUEST_METHOD', 'GET', read_only=True,
load_func=lambda x: x.upper(),
doc="The transmission method. (For example 'GET'
or 'POST'
).")
头信息的键不区分大小写。
from werkzeug.wrappers import Request
request = Request(environ)
现在你可以访问重要的变量,Werkzeug 将会帮你解析并解码他们。默认的字符集是utf-8 但是你可以通过 Request 子类更改。
WSGI将environ封装到Request中。
微信分享/微信扫码阅读