本文整理汇总了Python中werkzeug.datastructures.MultiDict.pop方法的典型用法代码示例。如果您正苦于以下问题:Python MultiDict.pop方法的具体用法?Python MultiDict.pop怎么用?Python MultiDict.pop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类werkzeug.datastructures.MultiDict
的用法示例。
在下文中一共展示了MultiDict.pop方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: args
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def args(self):
if PY2:
args_items = request.args.iteritems(multi=True)
else:
args_items = request.args.items(multi=True)
args = MultiDict(list(args_items) + list(request.view_args.items()))
args.pop('page', None)
# flat dict if non-multi values used
for k in args:
if len(args.getlist(k)) > 1:
return args
return args.to_dict()
示例2: autosave_post
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def autosave_post(self, obj=None):
"""
Handles autosave POST requests
"""
obj = obj if obj is not None else self.obj
if 'form.revision' not in request.form:
# as form.autosave is true, the form should have `form.revision` field even if it's empty
return {'status': 'error', 'error_identifier': 'form_missing_revision_field', 'error_description': _("Form must contain a revision ID.")}, 400
# CSRF check
if forms.Form().validate_on_submit():
incoming_data = MultiDict(request.form.items(multi=True))
client_revision = incoming_data.pop('form.revision')
incoming_data.pop('csrf_token', None)
# find the last draft
draft = self.get_draft(obj)
if draft is not None:
if client_revision is None or (client_revision is not None and str(draft.revision) != client_revision):
# draft exists, but the form did not send a revision ID,
# OR revision ID sent by client does not match the last revision ID
return {'status': 'error', 'error_identifier': 'missing_or_invalid_revision', 'error_description': _("There have been changes to this draft since you last edited it. Please reload.")}, 400
elif client_revision is not None and str(draft.revision) == client_revision:
# revision ID sent my client matches, save updated draft data and update revision ID
existing = draft.formdata
for key in incoming_data.keys():
if existing[key] != incoming_data[key]:
existing[key] = incoming_data[key]
draft.formdata = existing
draft.revision = uuid4()
elif draft is None and client_revision:
# The form contains a revision ID but no draft exists.
# Somebody is making autosave requests with an invalid draft ID.
return {'status': 'error', 'error_identifier': 'invalid_or_expired_revision', 'error_description': _("Invalid revision ID or the existing changes have been submitted already. Please reload.")}, 400
else:
# no draft exists, create one
draft = Draft(
table=Project.__tablename__, table_row_id=obj.uuid,
formdata=incoming_data, revision=uuid4()
)
db.session.add(draft)
db.session.commit()
return {'revision': draft.revision}
else:
return {'status': 'error', 'error_identifier': 'invalid_csrf', 'error_description': _("Invalid CSRF token")}, 400
示例3: registration
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def registration():
"""
Register user.
:return:
"""
provider_id = request.form.get('provider_id', None)
data = request.form
data = MultiDict()
for k in request.form:
data.add(k, request.form.get(k, None))
print("provider_id : "+str(provider_id))
if provider_id:
data.pop('provider_id')
provider = get_provider_or_404(provider_id)
connection_values = session.get('failed_login_connection', None)
else:
provider = None
connection_values = None
if data:
form = RegistrationForm(MultiDict(data))
else:
form = RegistrationForm()
if users.is_authenticated():
return jsonify(), 400
if form.validate_on_submit():
user = users.create_user(**data)
# See if there was an attempted social login prior to registering
# and if so use the provider connect_handler to save a connection
connection_values = session.pop('failed_login_connection', None)
if connection_values and provider_id:
connection_values['user_id'] = user.id
connect_handler(connection_values, provider)
if user:
login_user(user)
status = users.is_authenticated()
email = users.me().email if status else ""
return jsonify(status=status, email=email)
示例4: indico_request
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def indico_request(path):
request_values = MultiDict(request.values)
method = request_values.pop('_method', request.method).upper()
params = request_values.items(multi=True)
data = build_indico_request(path, params, app.config['INDICO_API_KEY'], app.config['INDICO_SECRET_KEY'])
request_args = {'params': data} if method == 'GET' else {'data': data}
try:
response = requests.request(method, app.config['INDICO_URL'] + path, verify=False, **request_args)
except requests.HTTPError as e:
response = e.response
except requests.ConnectionError as e:
return 'text/plain', str(e)
content_type = response.headers.get('Content-Type', '').split(';')[0]
with closing(response):
return content_type, response.text
示例5: args
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def args(self):
args = MultiDict(list(request.args.iteritems(multi=True)) + request.view_args.items())
args.pop('page', None)
return args
示例6: db_confirm
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def db_confirm(collection, document_id=None):
'''
Confirmación de edición de base de datos
'''
page = request.args.get("page", 0, int)
grps = request.args.get("mode", "all", str)
mode = request.args.get("show", "current", str)
size = request.args.get("size", 15, int)
document = db_unserialize(collection, request.form.get("defaults"))
document_writeable = json.loads(request.form.get("editable"))
request_form_dict = MultiDict(request.form)
# Valores por defecto
page_title = "admin_edit"
form_title = "admin_edit"
success_msgid = "admin_saved"
unchanged_msgid = "admin_nochanges"
form_fieldtypes = {}
form_fieldkwargs = {}
url_id = "admin.index"
goback = lambda : redirect(url_for(url_id, page = page, mode = grps, show = mode, size = size))
# Especificaciones de las colecciones
if collection == "user":
page_title = 'admin_users'
form_title = 'admin_users_info'
success_msgid = "admin_users_updated"
url_id = "admin.users"
save_fnc = lambda data: (
usersdb.create_user(data)
if document_id is None else
usersdb.update_user(data)
)
# La contraseña se mueve del campo "new password" a "password"
new_password = request_form_dict.pop(db_fnm("new password"), None)
if new_password:
document_writeable.append("password")
request_form_dict[db_fnm("password")] = new_password
elif collection == "origin":
page_title = 'admin_origins_info'
form_title = 'admin_origins_info'
url_id = "admin.origins"
save_fnc = lambda data: (
filesdb.create_source(data)
if document_id is None else
filesdb.update_source(data)
)
elif collection == "alternatives":
url_id = "admin.alternatives"
save_fnc = lambda data: configdb.update_alternative_config(document_id or data["_id"], data)
else:
abort(404)
if db_confirm_debug: # debug mode
def dummy_save(x):
logging.debug(("Update:" if document_id else "Create: ") + repr(x))
save_fnc = dummy_save
# Procesamiento de formulario
if request.form.get("confirmed", "False") == "True":
# La petición ya ha sido confirmada, procesamos
check_form = expanded_instance(EditForm,
{db_fnm(k): BooleanField(k) for k in document_writeable},
request_form_dict)
data = {k: document[k] for k in document_writeable if check_form[db_fnm(k)].data}
if data:
# Hay datos que modificar, se ejecuta save_fnc y redirigimos
if not document_id is None:
data["_id"] = db_ftd(collection, "_id", document_id)
try:
save_fnc(data)
flash(success_msgid, "success")
return goback()
except BaseException as e:
flash(traceback.format_exc(e), "error")
return goback()
else:
# No hay datos que modificar, redirigimos
flash(unchanged_msgid, "error")
return goback()
else:
# No se trata de la petición confirmada, procesamos el formulario como
# viene de db_edit, generamos el formulario de confirmación.
edict = {}
edit_form = expanded_instance(EditForm, {
db_fnm(k): form_fieldtypes.get(k, TextField)( k,
default=db_dtf(collection, k, document[k]) if k in document else None,
**form_fieldkwargs.get(k, edict))
for k in document_writeable
}, request_form_dict)
document_changes = [
(k, document.get(k, None), db_ftd(collection, k, edit_form[db_fnm(k)].data))
for k in document_writeable
#.........这里部分代码省略.........
示例7: MultiDict
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
from werkzeug.datastructures import MultiDict
post = MultiDict()
post.add("foo", "foobar")
foo_value = post.pop("foo")
if 'foo' not in post:
print('post 변수에 더이상 foo 변수가 없습니다.')
示例8: test_multidict
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def test_multidict():
"""Multidict behavior"""
md = MultiDict()
assert isinstance(md, dict)
mapping = [('a', 1), ('b', 2), ('a', 2), ('d', 3),
('a', 1), ('a', 3), ('d', 4), ('c', 3)]
md = MultiDict(mapping)
# simple getitem gives the first value
assert md['a'] == 1
assert md['c'] == 3
assert_raises(KeyError, lambda: md['e'])
assert md.get('a') == 1
# list getitem
assert md.getlist('a') == [1, 2, 1, 3]
assert md.getlist('d') == [3, 4]
# do not raise if key not found
assert md.getlist('x') == []
# simple setitem overwrites all values
md['a'] = 42
assert md.getlist('a') == [42]
# list setitem
md.setlist('a', [1, 2, 3])
assert md['a'] == 1
assert md.getlist('a') == [1, 2, 3]
# verify that it does not change original lists
l1 = [1, 2, 3]
md.setlist('a', l1)
del l1[:]
assert md['a'] == 1
# setdefault, setlistdefault
assert md.setdefault('u', 23) == 23
assert md.getlist('u') == [23]
del md['u']
assert md.setlistdefault('u', [-1, -2]) == [-1, -2]
assert md.getlist('u') == [-1, -2]
assert md['u'] == -1
# delitem
del md['u']
assert_raises(KeyError, lambda: md['u'])
del md['d']
assert md.getlist('d') == []
# keys, values, items, lists
assert list(sorted(md.keys())) == ['a', 'b', 'c']
assert list(sorted(md.iterkeys())) == ['a', 'b', 'c']
assert list(sorted(md.values())) == [1, 2, 3]
assert list(sorted(md.itervalues())) == [1, 2, 3]
assert list(sorted(md.items())) == [('a', 1), ('b', 2), ('c', 3)]
assert list(sorted(md.items(multi=True))) == \
[('a', 1), ('a', 2), ('a', 3), ('b', 2), ('c', 3)]
assert list(sorted(md.iteritems())) == [('a', 1), ('b', 2), ('c', 3)]
assert list(sorted(md.iteritems(multi=True))) == \
[('a', 1), ('a', 2), ('a', 3), ('b', 2), ('c', 3)]
assert list(sorted(md.lists())) == [('a', [1, 2, 3]), ('b', [2]), ('c', [3])]
assert list(sorted(md.iterlists())) == [('a', [1, 2, 3]), ('b', [2]), ('c', [3])]
# copy method
copy = md.copy()
assert copy['a'] == 1
assert copy.getlist('a') == [1, 2, 3]
# update with a multidict
od = MultiDict([('a', 4), ('a', 5), ('y', 0)])
md.update(od)
assert md.getlist('a') == [1, 2, 3, 4, 5]
assert md.getlist('y') == [0]
# update with a regular dict
md = copy
od = {'a': 4, 'y': 0}
md.update(od)
assert md.getlist('a') == [1, 2, 3, 4]
assert md.getlist('y') == [0]
# pop, poplist, popitem, popitemlist
assert md.pop('y') == 0
assert 'y' not in md
assert md.poplist('a') == [1, 2, 3, 4]
assert 'a' not in md
assert md.poplist('missing') == []
# remaining: b=2, c=3
popped = md.popitem()
assert popped in [('b', 2), ('c', 3)]
popped = md.popitemlist()
assert popped in [('b', [2]), ('c', [3])]
# type conversion
#.........这里部分代码省略.........
示例9: db_confirm
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def db_confirm(collection, document_id=None):
"""
Confirmación de edición de base de datos
"""
page = request.args.get("page", 0, int)
grps = request.args.get("mode", "all", str)
mode = request.args.get("show", "current", str)
size = request.args.get("size", 15, int)
goback = lambda: redirect(url_for(url_id, page=page, mode=grps, show=mode, size=size))
document = json.loads(request.form.get("defaults"))
document_writeable = json.loads(request.form.get("editable"))
request_form_dict = MultiDict(request.form)
success_msgid = "admin_saved"
unchanged_msgid = "admin_nochanges"
if collection == "user":
page_title = "admin_users"
form_title = "admin_users_info"
success_msgid = "admin_users_updated"
url_id = "admin.users"
save_fnc = lambda data: usersdb.update_user(data)
new_password = request_form_dict.pop(db_fnm("new password"), None)
if new_password:
document_writeable.append("password")
request_form_dict[db_fnm("password")] = new_password
elif collection == "origin":
page_title = "admin_origins_info"
form_title = "admin_origins_info"
url_id = "admin.origins"
save_fnc = lambda data: filesdb.update_source(data)
if request.form.get("confirmed", "False") == "True":
# La petición ha sido realizada por el formulario de confirmación,
# lo procesamos.
check_form = expanded_instance(
EditForm, {db_fnm(k): BooleanField(k) for k in document_writeable}, request_form_dict
)
data = {k: document[k] for k in document_writeable if check_form[db_fnm(k)].data}
if data:
data["_id"] = hex2mid(document_id)
save_fnc(data)
flash(success_msgid, "success")
return goback()
else:
flash(unchanged_msgid, "error")
return goback()
else:
# No se trata del petición confirmada, procesamos el formulario como
# viene de db_edit, generamos el formulario de confirmación.
edit_form = expanded_instance(
EditForm,
{db_fnm(k): TextField(k, default=db_dtf(collection, k, document[k])) for k in document_writeable},
request_form_dict,
)
document_changes = [
(k, document[k], db_ftd(collection, k, edit_form[db_fnm(k)].data))
for k in document_writeable
if edit_form[db_fnm(k)].data != db_dtf(collection, k, document[k])
]
if document_changes:
check_form = expanded_instance(
EditForm, {db_fnm(k): BooleanField(k, default=False) for k, w, w in document_changes}
)
check_form.defaults.data = json.dumps({k: v for k, w, v in document_changes})
check_form.editable.data = json.dumps([k for k, w, v in document_changes])
check_form.confirmed.data = True
else:
flash(unchanged_msgid, "error")
return goback()
return render_template(
"admin/confirm.html",
collection=collection,
document_id=document_id,
title=admin_title(page_title),
page_title=_(page_title),
check_form=check_form,
form_title=_(form_title),
fieldname=db_fnm,
repr=repr,
document_changes=document_changes,
list_mode=grps,
mode=mode,
page_size=size,
page=page,
)
示例10: test_multidict
# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import pop [as 别名]
def test_multidict():
"""Multidict behavior"""
md = MultiDict()
assert isinstance(md, dict)
mapping = [('a', 1), ('b', 2), ('a', 2), ('d', 3),
('a', 1), ('a', 3), ('d', 4), ('c', 3)]
md = MultiDict(mapping)
# simple getitem gives the first value
assert md['a'] == 1
assert md['c'] == 3
assert_raises(KeyError, lambda: md['e'])
assert md.get('a') == 1
# list getitem
assert md.getlist('a') == [1, 2, 1, 3]
assert md.getlist('d') == [3, 4]
# do not raise if key not found
assert md.getlist('x') == []
# simple setitem overwrites all values
md['a'] = 42
assert md.getlist('a') == [42]
# list setitem
md.setlist('a', [1, 2, 3])
assert md['a'] == 1
assert md.getlist('a') == [1, 2, 3]
# verify that it does not change original lists
l1 = [1, 2, 3]
md.setlist('a', l1)
del l1[:]
assert md['a'] == 1
# setdefault, setlistdefault
assert md.setdefault('u', 23) == 23
assert md.getlist('u') == [23]
del md['u']
assert md.setlistdefault('u', [-1, -2]) == [-1, -2]
assert md.getlist('u') == [-1, -2]
assert md['u'] == -1
# delitem
del md['u']
assert_raises(KeyError, lambda: md['u'])
del md['d']
assert md.getlist('d') == []
# keys, values, items, lists
assert list(sorted(md.keys())) == ['a', 'b', 'c']
assert list(sorted(md.iterkeys())) == ['a', 'b', 'c']
assert list(sorted(md.values())) == [1, 2, 3]
assert list(sorted(md.itervalues())) == [1, 2, 3]
assert list(sorted(md.items())) == [('a', 1), ('b', 2), ('c', 3)]
assert list(sorted(md.items(multi=True))) == \
[('a', 1), ('a', 2), ('a', 3), ('b', 2), ('c', 3)]
assert list(sorted(md.iteritems())) == [('a', 1), ('b', 2), ('c', 3)]
assert list(sorted(md.iteritems(multi=True))) == \
[('a', 1), ('a', 2), ('a', 3), ('b', 2), ('c', 3)]
assert list(sorted(md.lists())) == [('a', [1, 2, 3]), ('b', [2]), ('c', [3])]
assert list(sorted(md.iterlists())) == [('a', [1, 2, 3]), ('b', [2]), ('c', [3])]
# copy method
copy = md.copy()
assert copy['a'] == 1
assert copy.getlist('a') == [1, 2, 3]
# update with a multidict
od = MultiDict([('a', 4), ('a', 5), ('y', 0)])
md.update(od)
assert md.getlist('a') == [1, 2, 3, 4, 5]
assert md.getlist('y') == [0]
# update with a regular dict
md = copy
od = {'a': 4, 'y': 0}
md.update(od)
assert md.getlist('a') == [1, 2, 3, 4]
assert md.getlist('y') == [0]
# pop, poplist, popitem, popitemlist
assert md.pop('y') == 0
assert 'y' not in md
assert md.poplist('a') == [1, 2, 3, 4]
assert 'a' not in md
assert md.poplist('missing') == []
# remaining: b=2, c=3
popped = md.popitem()
assert popped in [('b', 2), ('c', 3)]
popped = md.popitemlist()
assert popped in [('b', [2]), ('c', [3])]
# type conversion
#.........这里部分代码省略.........