'Return a MultiDict containing all the variables from a form
request. Returns an empty dict-like object for non-form requests.
Form requests are typically POST requests, however PUT requests with
an appropriate Content-Type are also supported.'

@property
def POST(self):

    env = self.environ
    if (self.method not in ('POST', 'PUT')):
        return NoVars('Not    a    form    request')
    if ('webob._parsed_post_vars' in env):
        (vars, body_file) = env['webob._parsed_post_vars']
        if (body_file is self.body_file_raw):
            return vars
    content_type = self.content_type
    if (((self.method == 'PUT') and (not content_type)) or (content_type not in ('', 'application/x-www-form-urlencoded', 'multipart/form-data'))):
        return NoVars(('Not    an    HTML    form    submission    (Content-Type:    %s)' % content_type))
    self._check_charset()
    if self.is_body_seekable:
        self.body_file_raw.seek(0)
    fs_environ = env.copy()
    fs_environ.setdefault('CONTENT_LENGTH', '0')
    fs_environ['QUERY_STRING'] = ''
    if PY3:
        fs = cgi.FieldStorage(fp=self.body_file, environ=fs_environ, keep_blank_values=True, encoding='utf8')
        vars = MultiDict.from_fieldstorage(fs)
    else:
        fs = cgi.FieldStorage(fp=self.body_file, environ=fs_environ, keep_blank_values=True)
        vars = MultiDict.from_fieldstorage(fs)
    ctype = (self._content_type_raw or 'application/x-www-form-urlencoded')
    f = FakeCGIBody(vars, ctype)
    self.body_file = io.BufferedReader(f)
    env['webob._parsed_post_vars'] = (vars, self.body_file_raw)
    return vars
