def blank(cls, path, environ=None, base_url=None,
headers=None, **kwargs): # pragma: no cover
"""Adds parameters compatible with WebOb > 1.2: POST and **kwargs."""
try:
request = super(Request, cls).blank(
path,
environ=environ,
base_url=base_url,
headers=headers,
**kwargs
)
if cls._request_charset and not cls._request_charset == 'utf-8':
return request.decode(cls._request_charset)
return request
except TypeError:
if not kwargs:
raise
data = kwargs.pop('POST', None)
if data is not None:
environ = environ or {}
environ['REQUEST_METHOD'] = 'POST'
if hasattr(data, 'items'):
data = list(data.items())
if not isinstance(data, str):
data = urlencode(data)
environ['wsgi.input'] = cStringIO(data)
environ['webob.is_body_seekable'] = True
environ['CONTENT_LENGTH'] = str(len(data))
environ['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'
base = super(Request, cls).blank(path, environ=environ,
base_url=base_url, headers=headers)
if kwargs:
obj = cls(base.environ, **kwargs)
obj.headers.update(base.headers)
return obj
else:
return base
评论列表
文章目录