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中。

--------EOF---------
微信分享/微信扫码阅读