本文整理汇总了Python中webob.multidict.MultiDict.update方法的典型用法代码示例。如果您正苦于以下问题:Python MultiDict.update方法的具体用法?Python MultiDict.update怎么用?Python MultiDict.update使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类webob.multidict.MultiDict
的用法示例。
在下文中一共展示了MultiDict.update方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import update [as 别名]
def __init__(self, request, formdata=None, obj=None, prefix='', **kwargs):
self.request = request
if request.stash:
if formdata is None:
formdata = MultiDict()
else:
formdata = deepcopy(formdata)
formdata.update(request.stash['post'])
super(FloofForm, self).__init__(formdata=formdata, obj=obj,
prefix=prefix, **kwargs)
示例2: add_entry
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import update [as 别名]
def add_entry(self):
entry_id = self.request.matchdict.get("id_", 0)
if entry_id:
entry = DBSession.query(Entry).filter(Entry.id == entry_id).one()
form_data = MultiDict({'title': entry.title, 'text': entry._text,
'category': entry.category_name})
form_data.update(self.request.session.get("edit_entry_%i_form" % entry.id, {}))
else:
entry = None
form_data = MultiDict(self.request.session.get("add_entry_form", {}))
form_data.update(self.request.POST)
form = EntryForm(form_data)
form.category.choices = [('', ' - None - ')] + [(name[0], name[0]) for name in get_categories()]
preview = None
if self.request.method == 'POST':
if not form.validate():
for field, errors in form.errors.items():
for error in errors:
self.request.session.flash('Field "%s" has the following error: "%s"' % (field, error))
if entry:
self.request.session["edit_entry_%i_form" % entry.id] = form.data
else:
self.request.session["add_entry_form"] = form.data
return HTTPFound(location=self.request.route_url('add_entry'))
if form.submit.data:
if "category" in form.data and form.data["category"]:
category = DBSession.query(Category)\
.filter(Category.name == form.data["category"]).one()
else:
category = None
if not entry:
entry = Entry(form.data["title"], form.data["text"])
entry.category = category
if "add_entry_form" in self.request.session:
del self.request.session["add_entry_form"]
DBSession.add(entry)
else:
if "edit_entry_%i_form" \
% entry.id in self.request.session:
del self.request.session["edit_entry_%i_form"
% entry.id]
entry._text = form.data["text"]
entry.title = form.data["title"]
entry.category = category
DBSession.flush()
get_categories.invalidate()
get_recent_posts.invalidate()
return HTTPFound(location=self.request.route_url('view_entry', id_=entry.id))
if form.preview.data:
preview = entry
return {'form': form, 'preview': preview}
示例3: test_multidict
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import update [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])])
示例4: build_url
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import update [as 别名]
def build_url(self, page=None, size=None, sort=None, facets=tuple(),
unselect_facets=tuple(), **kwargs):
'''
b/w compat
'''
query = MultiDict(request.params.items())
query.update(kwargs)
query["%s_page" % self.name] = page if page else 1
query["%s_size" % self.name] = size if size else self.size
query["%s_sort" % self.name] = sort if sort else self.selected_sort
# sanitize the the query arguments
query_items = ([(str(key), unicode(value).encode('utf-8')) for
(key, value) in query.items()])
url_base = url.current(qualified=True)
return url_base + "?" + urllib.urlencode(query_items)
示例5: test_multidict
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import update [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])]))
示例6: build_url
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import update [as 别名]
def build_url(self, page=None, size=None, sort=None, facets=tuple(),
unselect_facets=tuple(), **kwargs):
'''
b/w compat
'''
query = MultiDict(request.params.items())
query.update(kwargs)
query[self.page_param] = page if page else 1
query[self.size_param] = size if size else self.size
query[self.sort_param] = sort if sort else self.selected_sort
# sanitize the the query arguments
query_items = ([(str(key), unicode(value).encode('utf-8')) for
(key, value) in query.items()])
url_base = url.current(qualified=True)
protocol = config.get('adhocracy.protocol', 'http').strip()
if ', ' in url_base:
# hard coded fix for enquetebeteiligung.de
url_base = '%s://%s' % (protocol, url_base.split(', ')[1])
else:
url_base = '%s://%s' % (protocol, url_base.split('://')[1])
return url_base + "?" + urllib.urlencode(query_items)
示例7: parse_formvars
# 需要导入模块: from webob.multidict import MultiDict [as 别名]
# 或者: from webob.multidict.MultiDict import update [as 别名]
def parse_formvars(environ, include_get_vars=True):
"""Parses the request, returning a MultiDict of form variables.
If ``include_get_vars`` is true then GET (query string) variables
will also be folded into the MultiDict.
All values should be strings, except for file uploads which are
left as ``FieldStorage`` instances.
If the request was not a normal form request (e.g., a POST with an
XML body) then ``environ['wsgi.input']`` won't be read.
"""
source = environ['wsgi.input']
if 'paste.parsed_formvars' in environ:
parsed, check_source = environ['paste.parsed_formvars']
if check_source == source:
if include_get_vars:
parsed.update(parse_querystring(environ))
return parsed
# @@: Shouldn't bother FieldStorage parsing during GET/HEAD and
# fake_out_cgi requests
type = environ.get('CONTENT_TYPE', '').lower()
if ';' in type:
type = type.split(';', 1)[0]
fake_out_cgi = type not in ('', 'application/x-www-form-urlencoded',
'multipart/form-data')
# FieldStorage assumes a default CONTENT_LENGTH of -1, but a
# default of 0 is better:
if not environ.get('CONTENT_LENGTH'):
environ['CONTENT_LENGTH'] = '0'
# Prevent FieldStorage from parsing QUERY_STRING during GET/HEAD
# requests
old_query_string = environ.get('QUERY_STRING', '')
environ['QUERY_STRING'] = ''
if fake_out_cgi:
input = StringIO('')
old_content_type = environ.get('CONTENT_TYPE')
old_content_length = environ.get('CONTENT_LENGTH')
environ['CONTENT_LENGTH'] = '0'
environ['CONTENT_TYPE'] = ''
else:
input = environ['wsgi.input']
fs = cgi.FieldStorage(fp=input,
environ=environ,
keep_blank_values=1)
environ['QUERY_STRING'] = old_query_string
if fake_out_cgi:
environ['CONTENT_TYPE'] = old_content_type
environ['CONTENT_LENGTH'] = old_content_length
formvars = MultiDict()
if isinstance(fs.value, list):
for name in fs.keys():
values = fs[name]
if not isinstance(values, list):
values = [values]
for value in values:
if not value.filename:
value = value.value
formvars.add(name, value)
environ['paste.parsed_formvars'] = (formvars, source)
if include_get_vars:
formvars.update(parse_querystring(environ))
return formvars