本文整理汇总了Python中webob.multidict.MultiDict.dict_of_lists方法的典型用法代码示例。如果您正苦于以下问题:Python MultiDict.dict_of_lists方法的具体用法?Python MultiDict.dict_of_lists怎么用?Python MultiDict.dict_of_lists使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类webob.multidict.MultiDict
的用法示例。
在下文中一共展示了MultiDict.dict_of_lists方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _w
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import dict_of_lists [as 别名]
def _w(*args, **kwargs):
page = int(kwargs.pop(own_parameters["page"], 1))
real_items_per_page = int(kwargs.pop(own_parameters["items_per_page"], items_per_page))
# Iterate over all of the named arguments expected by the function f
# if any of those arguments have values present in the kwargs dict,
# add the value to the positional args list, and remove it from the
# kwargs dict
argvars = inspect.getargspec(f)[0][1:]
if argvars:
args = list(args)
for i, var in enumerate(args):
if i >= len(argvars):
break
var = argvars[i]
if var in kwargs:
if i + 1 >= len(args):
args.append(kwargs[var])
else:
args[i + 1] = kwargs[var]
del kwargs[var]
res = f(*args, **kwargs)
if isinstance(res, dict) and name in res:
additional_parameters = MultiDict()
for key, value in request.params.iteritems():
if key not in own_parameters:
additional_parameters.add(key, value)
collection = res[name]
# Use CustomPage if our extra custom arg was provided
if items_first_page is not None:
page_class = CustomPage
else:
page_class = Page
page = page_class(
collection,
page,
items_per_page=real_items_per_page,
items_first_page=items_first_page,
**additional_parameters.dict_of_lists()
)
# wrap the pager so that it will render
# the proper page-parameter
page.pager = partial(page.pager, page_param=own_parameters["page"])
res[name] = page
# this is a bit strange - it appears
# as if c returns an empty
# string for everything it dosen't know.
# I didn't find that documented, so I
# just put this in here and hope it works.
if not hasattr(tmpl_context, "paginators") or type(tmpl_context.paginators) == str:
tmpl_context.paginators = Bunch()
tmpl_context.paginators[name] = page
return res
示例2: test_multidict
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import dict_of_lists [as 别名]
def test_multidict():
d = MultiDict(a=1, b=2)
assert d['a'] == 1
assert d.getall('c') == []
d.add('a', 2)
assert d['a'] == 2
assert d.getall('a') == [1, 2]
d['b'] = 4
assert d.getall('b') == [4]
assert list(d.keys()) == ['a', 'a', 'b']
assert list(d.items()) == [('a', 1), ('a', 2), ('b', 4)]
assert d.mixed() == {'a': [1, 2], 'b': 4}
# test getone
# KeyError: "Multiple values match 'a': [1, 2]"
with pytest.raises(KeyError):
d.getone('a')
assert d.getone('b') == 4
# KeyError: "Key not found: 'g'"
with pytest.raises(KeyError):
d.getone('g')
assert d.dict_of_lists() == {'a': [1, 2], 'b': [4]}
assert 'b' in d
assert 'e' not in d
d.clear()
assert 'b' not in d
d['a'] = 4
d.add('a', 5)
e = d.copy()
assert 'a' in e
e.clear()
e['f'] = 42
d.update(e)
assert d == MultiDict([('a', 4), ('a', 5), ('f', 42)])
f = d.pop('a')
assert f == 4
assert d['a'] == 5
assert d.pop('g', 42) == 42
with pytest.raises(KeyError):
d.pop('n')
# TypeError: pop expected at most 2 arguments, got 3
with pytest.raises(TypeError):
d.pop(4, 2, 3)
d.setdefault('g', []).append(4)
assert d == MultiDict([('a', 5), ('f', 42), ('g', [4])])
示例3: test_multidict
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import dict_of_lists [as 别名]
def test_multidict():
d = MultiDict(a=1, b=2)
eq(d['a'], 1)
eq(d.getall('c'), [])
d.add('a', 2)
eq(d['a'], 2)
eq(d.getall('a'), [1, 2])
d['b'] = 4
eq(d.getall('b'), [4])
eq(list(d.keys()), ['a', 'a', 'b'])
eq(list(d.items()), [('a', 1), ('a', 2), ('b', 4)])
eq(d.mixed(), {'a': [1, 2], 'b': 4})
# test getone
# KeyError: "Multiple values match 'a': [1, 2]"
assert_raises(KeyError, d.getone, 'a')
eq(d.getone('b'), 4)
# KeyError: "Key not found: 'g'"
assert_raises(KeyError, d.getone, 'g')
eq(d.dict_of_lists(), {'a': [1, 2], 'b': [4]})
assert 'b' in d
assert 'e' not in d
d.clear()
assert 'b' not in d
d['a'] = 4
d.add('a', 5)
e = d.copy()
assert 'a' in e
e.clear()
e['f'] = 42
d.update(e)
eq(d, MultiDict([('a', 4), ('a', 5), ('f', 42)]))
f = d.pop('a')
eq(f, 4)
eq(d['a'], 5)
eq(d.pop('g', 42), 42)
assert_raises(KeyError, d.pop, 'n')
# TypeError: pop expected at most 2 arguments, got 3
assert_raises(TypeError, d.pop, 4, 2, 3)
d.setdefault('g', []).append(4)
eq(d, MultiDict([('a', 5), ('f', 42), ('g', [4])]))
示例4: Request
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import dict_of_lists [as 别名]
class Request(object):
headers = {'content-type':'text/html'}
def __init__(self, form_name='form', POST=None, GET=None, method='POST'):
# Build GET and POST data
self.GET = MultiDict(GET or {})
self.POST = MultiDict(POST or {})
# Add the form's name to the appropriate request data dict.
getattr(self, method.upper())['__formish_form__'] = form_name
# Set the method
self.method = method
def get_post(self):
def container_factory(parent_key, item_key):
if item_key.isdigit():
return []
return {}
return unflatten(self.POST.dict_of_lists().iteritems(), container_factory=container_factory)