Пример #1
0
def test_multi_dict(cgi_filed):
    mdict = MultiDict({'name': 'jack', 'age': 22}, country='US')
    assert len(mdict) == 3

    mdict.add('name', 'rose')
    assert mdict['name'] == mdict.get('name') == 'rose'
    assert mdict.get('age') == 22
    assert mdict.get('age', side_func=lambda v: v + 1) == 23
    assert mdict.get('inexistence', default='default') == 'default'

    assert len(mdict.getall('name')) == 2
    assert mdict.getall('inexistence') == []

    items = mdict.allitems()
    assert len(items) == 4
    assert len(MultiDict.from_lists(items)) == 3

    mdict = MultiDict.from_cgi_filedStoreage(cgi_filed)
    assert mdict['cgi'].headers == {'k': 'v'}
Пример #2
0
    def _read_post(self):
        """ Read All the variables from a form request and return a MultiDict.

        -- If your Pyhon version is below 3.4.4, you should note this
        issuse (https://bugs.python.org/issue23801) at cgi.FieldStorage.--
        """
        if self._post:
            return self._post

        if not (self.method in self.FORM_METHOD and self.mine_type in self.FORM_CTYPE):
            self._post = MultiDict()
        else:
            body = yield from self._get_body()
            fenv = self.env.copy()
            fenv["QUERY_STRING"] = ""
            fs = cgi.FieldStorage(fp=io.BytesIO(body), environ=fenv, keep_blank_values=True, encoding=self.charset)
            self._post = MultiDict.from_cgi_filedStoreage(fs)

        return self._post