当前位置: 首页>>代码示例>>Python>>正文


Python MultiDict.setlist方法代码示例

本文整理汇总了Python中werkzeug.datastructures.MultiDict.setlist方法的典型用法代码示例。如果您正苦于以下问题:Python MultiDict.setlist方法的具体用法?Python MultiDict.setlist怎么用?Python MultiDict.setlist使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在werkzeug.datastructures.MultiDict的用法示例。


在下文中一共展示了MultiDict.setlist方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_multidict_pickle

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def test_multidict_pickle():
    """MultiDict types are pickle-able"""
    for protocol in xrange(pickle.HIGHEST_PROTOCOL + 1):
        print 'pickling protocol', protocol
        d = MultiDict()
        d.setlist('foo', [1, 2, 3, 4])
        d.setlist('bar', 'foo bar baz'.split())
        s = pickle.dumps(d, protocol)
        ud = pickle.loads(s)
        assert type(ud) is type(d)
        print ud.lists()
        assert ud == d
        ud['newkey'] = 'bla'
        assert ud != d

        im = ImmutableMultiDict(d)
        assert im == d
        s = pickle.dumps(im, protocol)
        ud = pickle.loads(s)
        assert ud == im
        assert type(ud) is type(im)

        c = CombinedMultiDict([ud, im])
        cc = pickle.loads(pickle.dumps(c, protocol))
        assert c == cc
        assert type(c) is type(cc)
开发者ID:t11e,项目名称:werkzeug,代码行数:28,代码来源:test_datastructures.py

示例2: test_meeting_multicheckbox_field_non_editable

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def test_meeting_multicheckbox_field_non_editable(app, user):
    category = MeetingCategoryFactory(meeting__owner=user.staff)
    meeting = category.meeting
    data = MultiDict(ParticipantFactory.attributes())
    data['category_id'] = category.id
    field_data = MultiDict(CustomFieldFactory.attributes())
    field_data['label-english'] = field_data['label'].english
    field_data['hint-english'] = field_data['hint'].english
    field_data['field_type'] = CustomField.MULTI_CHECKBOX
    field_data.setlist('custom_field_choices',
                       ['first_choice', 'second_choice', 'third_choice'])

    client = app.test_client()
    with app.test_request_context():
        with client.session_transaction() as sess:
            sess['user_id'] = user.id
        add_custom_fields_for_meeting(meeting)
        add_multicheckbox_field(client, meeting, field_data)
        field = (CustomField.query
                 .filter_by(slug=field_data['label-english'])
                 .one())

        populate_participant_form(meeting, data)
        data.setlist(field.slug, ['first_choice', 'third_choice'])
        resp = client.post(url_for('meetings.participant_edit',
                                   meeting_id=meeting.id), data=data)
        assert resp.status_code == 302
        assert Participant.query.current_meeting().participants().first()
        assert CustomFieldValue.query.count() == 2
        assert field.choices.count() == 3

        field_data.add('custom_field_choices', 'fourth_choice')
        add_multicheckbox_field(client, meeting, field_data, field.id,
                                302)
        assert field.choices.count() == 3
开发者ID:razvanch,项目名称:meetings-registration-tool,代码行数:37,代码来源:test_meeting_custom_fields.py

示例3: payload

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def payload():
    """ Performs sanity checks or decoding depending on the Content-Type,
    then returns the request payload as a dict. If request Content-Type is
    unsupported, aborts with a 400 (Bad Request).

    .. versionchanged:: 0.7
       Allow 'multipart/form-data' form fields to be JSON encoded, once the
       MULTIPART_FORM_FIELDS_AS_JSON setting was been set.

    .. versionchanged:: 0.3
       Allow 'multipart/form-data' content type.

    .. versionchanged:: 0.1.1
       Payload returned as a standard python dict regardless of request content
       type.

    .. versionchanged:: 0.0.9
       More informative error messages.
       request.get_json() replaces the now deprecated request.json


    .. versionchanged:: 0.0.7
       Native Flask request.json preferred over json.loads.

    .. versionadded: 0.0.5
    """
    content_type = request.headers.get('Content-Type', '').split(';')[0]

    if content_type in config.JSON_REQUEST_CONTENT_TYPES:
        return request.get_json(force=True)
    elif content_type == 'application/x-www-form-urlencoded':
        return multidict_to_dict(request.form) if len(request.form) else \
            abort(400, description='No form-urlencoded data supplied')
    elif content_type == 'multipart/form-data':
        # as multipart is also used for file uploads, we let an empty
        # request.form go through as long as there are also files in the
        # request.
        if len(request.form) or len(request.files):
            # merge form fields and request files, so we get a single payload
            # to be validated against the resource schema.

            formItems = MultiDict(request.form)

            if config.MULTIPART_FORM_FIELDS_AS_JSON:
                for key, lst in formItems.lists():
                    new_lst = []
                    for value in lst:
                        try:
                            new_lst.append(json.loads(value))
                        except ValueError:
                            new_lst.append(json.loads('"{0}"'.format(value)))
                    formItems.setlist(key, new_lst)

            payload = CombinedMultiDict([formItems, request.files])
            return multidict_to_dict(payload)

        else:
            abort(400, description='No multipart/form-data supplied')
    else:
        abort(400, description='Unknown or no Content-Type header supplied')
开发者ID:iotrl,项目名称:eve,代码行数:62,代码来源:common.py

示例4: _get_form_data

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
    def _get_form_data(self):
        if request.method == "POST":
            # Actual form submission (when using the period selector widget)
            return RHRoomBookingSearchBookings._get_form_data(self)

        # Class-specific criteria + default times
        data = MultiDict(self.search_criteria)
        data["start_time"] = "00:00"
        data["end_time"] = "23:59"
        data["start_date"] = date.today().strftime("%d/%m/%Y")
        data["end_date"] = (date.today() + timedelta(weeks=1)).strftime("%d/%m/%Y")
        data.setlist("room_ids", [r.id for r in self._rooms])
        return data
开发者ID:k3njiy,项目名称:indico,代码行数:15,代码来源:reservations.py

示例5: test_meeting_multicheckbox_field_add

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def test_meeting_multicheckbox_field_add(app, user):
    meeting = MeetingFactory()
    data = MultiDict(CustomFieldFactory.attributes())
    data['label-english'] = data['label'].english
    data['hint-english'] = data['hint'].english
    data['field_type'] = CustomField.MULTI_CHECKBOX
    data.setlist('custom_field_choices', ['first_choice', 'second_choice'])
    client = app.test_client()
    with app.test_request_context():
        with client.session_transaction() as sess:
            sess['user_id'] = user.id
        add_multicheckbox_field(client, meeting, data)
        assert CustomField.query.filter_by(meeting=meeting).count() == 1
        assert CustomFieldChoice.query.count() == 2
开发者ID:razvanch,项目名称:meetings-registration-tool,代码行数:16,代码来源:test_meeting_custom_fields.py

示例6: process_calling_args

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
    def process_calling_args(self, urlargs):
        # start with query string arguments that are expected
        args = MultiDict()
        if self.expected_qs_args:
            for k in six.iterkeys(request.args):
                if k in self.expected_qs_args:
                    args.setlist(k, request.args.getlist(k))

        # add URL arguments, replacing GET arguments if they are there.  URL
        # arguments get precedence and we don't want to just .update()
        # because that would allow arbitrary get arguments to affect the
        # values of the URL arguments
        for k, v in six.iteritems(urlargs):
            args[k] = v

        return _werkzeug_multi_dict_conv(args)
开发者ID:guruofgentoo,项目名称:keg,代码行数:18,代码来源:web.py

示例7: test_meeting_participant_detail_multicheckbox_list

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def test_meeting_participant_detail_multicheckbox_list(app, user):
    category = MeetingCategoryFactory(meeting__owner=user.staff)
    meeting = category.meeting
    data = MultiDict(ParticipantFactory.attributes())
    data['category_id'] = category.id
    field_data = MultiDict(CustomFieldFactory.attributes())
    field_data['label-english'] = field_data['label'].english
    field_data['hint-english'] = field_data['hint'].english
    field_data['field_type'] = CustomField.MULTI_CHECKBOX
    field_data.setlist('custom_field_choices',
                       ['first_choice', 'second_choice', 'third_choice'])

    client = app.test_client()
    with app.test_request_context():
        with client.session_transaction() as sess:
            sess['user_id'] = user.id
        add_custom_fields_for_meeting(meeting)
        add_multicheckbox_field(client, meeting, field_data)
        field = (CustomField.query
                 .filter_by(slug=field_data['label-english'])
                 .one())

        populate_participant_form(meeting, data)
        choices = ['first_choice', 'third_choice']
        data.setlist(field.slug, choices)
        resp = client.post(url_for('meetings.participant_edit',
                                   meeting_id=meeting.id), data=data)
        assert resp.status_code == 302
        assert Participant.query.current_meeting().participants().first()
        participant = Participant.query.get(1)
        participant.attended = True
        resp = client.get(url_for('meetings.participant_detail',
                                  meeting_id=category.meeting.id,
                                  participant_id=1))

        assert resp.status_code == 200
        details = PyQuery(resp.data)('tr#row-' + field.slug)
        assert len(details) == 1
        assert ''.join(choices) == details[0].find('td').text_content()
开发者ID:razvanch,项目名称:meetings-registration-tool,代码行数:41,代码来源:test_meeting_participant.py

示例8: url_update_endpoint_args

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def url_update_endpoint_args(endpoint, **kwargs):
	"""Like url_for by using current URL for unspecified parameters.

	Return the URL for passed endpoint using args from current request and kwargs.
	"""
	# request.args contains parameters from the query string
	# request.view_args contains parameters that matched the view signature
	args = MultiDict(request.args)
	args.update(request.view_args)
	for arg, value in kwargs.items():
		if isinstance(value, Iterable) and not isinstance(value, str):
			args.setlist(arg, value)
		else:
			args[arg] = value
	# Now set any individual args to the object instead of a list of len 1
	# TODO Issue #4
	#  this is broken if it supposed to be a list of Iterables (e.g. strings)
	args = args.to_dict(flat=False)
	for key in set(args.keys()):
		values = args[key]
		if len(values) == 1:
			args[key] = values[0]
	return url_for(endpoint, **args)
开发者ID:mlenzen,项目名称:Flask-LenzM-Utils,代码行数:25,代码来源:url_update.py

示例9: test_multidict_pickle

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
def test_multidict_pickle():
    """MultiDict types are pickle-able"""
    for protocol in xrange(pickle.HIGHEST_PROTOCOL + 1):
        print 'pickling protocol', protocol
        d = MultiDict()
        d.setlist('foo', [1, 2, 3, 4])
        d.setlist('bar', 'foo bar baz'.split())
        s = pickle.dumps(d, protocol)
        ud = pickle.loads(s)
        assert type(ud) is type(d)
        assert ud == d
        assert pickle.loads(s.replace('werkzeug.datastructures', 'werkzeug')) == d
        ud['newkey'] = 'bla'
        assert ud != d

        d2 = OrderedMultiDict(d)
        d2.add('foo', 5)
        s = pickle.dumps(d2, protocol)
        ud = pickle.loads(s)
        assert type(ud) is type(d2)
        assert ud == d2
        ud['newkey'] = 'bla'
        print ud
        print d2
        assert ud != d2

        im = ImmutableMultiDict(d)
        assert im == d
        s = pickle.dumps(im, protocol)
        ud = pickle.loads(s)
        assert ud == im
        assert type(ud) is type(im)

        c = CombinedMultiDict([ud, im])
        cc = pickle.loads(pickle.dumps(c, protocol))
        assert c == cc
        assert type(c) is type(cc)
开发者ID:d1on,项目名称:werkzeug,代码行数:39,代码来源:test_datastructures.py

示例10: MultiDict

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
from werkzeug.datastructures import MultiDict

post = MultiDict()
post.setlist("foo", ["ham", "ham2"])
post.setlistdefault("foo", ["answer", "answer2"])
开发者ID:tj0822,项目名称:Python,代码行数:7,代码来源:2-45.py

示例11: TestSearchSummary

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
class TestSearchSummary(unittest.TestCase):

    def setUp(self):
        self.fixture = _get_fixture_data()
        self.search_results = SearchResults(self.fixture)
        self.request_args = MultiDict([
            ('lot', 'saas'),
            ('q', 'email')])

    def tearDown(self):
        pass

    def test_write_list_as_sentence_with_one_item(self):
        self.assertEqual(
            SearchSummary.write_list_as_sentence(['item1'], 'and'),
            u"item1")

    def test_write_list_as_sentence_with_two_items(self):
        self.assertEqual(
            SearchSummary.write_list_as_sentence(['item1', 'item2'], 'and'),
            u"item1 and item2")

    def test_write_list_as_sentence_with_three_items(self):
        self.assertEqual(
            SearchSummary.write_list_as_sentence(
                ['item1', 'item2', 'item3'], 'and'),
            u"item1, item2 and item3")

    def test_write_parts_as_sentence_with_first_part_None(self):
        self.assertEqual(
            SearchSummary.write_parts_as_sentence(
                [None, u"Hour"]),
            u"Hour")

    def test_write_parts_as_sentence_with_second_part_None(self):
        self.assertEqual(
            SearchSummary.write_parts_as_sentence(
                [u"Hour", None]),
            u"Hour")

    def test_write_parts_as_sentence_with_both_parts_not_None(self):
        self.assertEqual(
            SearchSummary.write_parts_as_sentence(
                [u"an", u"Hour"]),
            u"an Hour")

    def test_search_summary_works_with_keywords(self):
        search_summary = SearchSummary('1', self.request_args, filter_groups)
        self.assertEqual(search_summary.count, '1')
        self.assertEqual(search_summary.sentence, (
            u"result found containing <em>email</em>" +
            u" in <em>Software as a Service</em>"))
        self.assertEqual(len(search_summary.filters_fragments), 0)

    def test_search_summary_works_with_blank_keywords(self):
        self.request_args.setlist('q', [''])
        search_summary = SearchSummary('1', self.request_args, filter_groups)
        self.assertEqual(search_summary.count, '1')
        self.assertEqual(search_summary.sentence, (
            u"result found" +
            u" in <em>Software as a Service</em>"))
        self.assertEqual(len(search_summary.filters_fragments), 0)

    def test_search_summary_works_with_a_different_lot(self):
        self.request_args.setlist('lot', ['iaas'])
        search_summary = SearchSummary('1', self.request_args, filter_groups)
        self.assertEqual(search_summary.count, '1')
        self.assertEqual(search_summary.sentence, (
            u"result found containing <em>email</em>" +
            u" in <em>Infrastructure as a Service</em>"))
        self.assertEqual(len(search_summary.filters_fragments), 0)

    def test_search_summary_works_with_no_results(self):
        search_summary = SearchSummary('0', self.request_args, filter_groups)
        self.assertEqual(search_summary.count, '0')
        self.assertEqual(search_summary.sentence, (
            u"results found containing <em>email</em>" +
            u" in <em>Software as a Service</em>"))
        self.assertEqual(len(search_summary.filters_fragments), 0)

    def test_search_summary_works_with_single_result(self):
        search_summary = SearchSummary(1, self.request_args, filter_groups)
        self.assertEqual(search_summary.count, '1')
        self.assertEqual(search_summary.sentence, (
            u"result found containing <em>email</em>" +
            u" in <em>Software as a Service</em>"))
        self.assertEqual(len(search_summary.filters_fragments), 0)

    def test_search_summary_works_with_multiple_results(self):
        search_summary = SearchSummary('9', self.request_args, filter_groups)
        self.assertEqual(search_summary.count, '9')
        self.assertEqual(search_summary.sentence, (
            u"results found containing <em>email</em>" +
            u" in <em>Software as a Service</em>"))
        self.assertEqual(len(search_summary.filters_fragments), 0)

    def test_search_summary_with_a_single_filter_group(self):
        self.request_args.setlist('serviceTypes', ['collaboration'])
        search_summary = SearchSummary('9', self.request_args, filter_groups)
        self.assertEqual(search_summary.count, '9')
#.........这里部分代码省略.........
开发者ID:AusDTO,项目名称:dto-digitalmarketplace-buyer-frontend,代码行数:103,代码来源:test_search_summary.py

示例12: MultiDict

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
from werkzeug.datastructures import MultiDict

post = MultiDict()
post.setlist("question", ["answer1", "answer2"])
开发者ID:tj0822,项目名称:Python,代码行数:6,代码来源:2-43.py

示例13: test_multidict

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [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
#.........这里部分代码省略.........
开发者ID:d1on,项目名称:werkzeug,代码行数:103,代码来源:test_datastructures.py

示例14: get

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [as 别名]
 def get(user_id):
     User.objects.get_or_404(id=user_id)
     params = MultiDict(request.values)
     params.setlist('owner', (user_id,))
     return list(Collection.get_all(params))
开发者ID:blstream,项目名称:myHoard_Python,代码行数:7,代码来源:views.py

示例15: test_multidict

# 需要导入模块: from werkzeug.datastructures import MultiDict [as 别名]
# 或者: from werkzeug.datastructures.MultiDict import setlist [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
#.........这里部分代码省略.........
开发者ID:t11e,项目名称:werkzeug,代码行数:103,代码来源:test_datastructures.py


注:本文中的werkzeug.datastructures.MultiDict.setlist方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。