Requests: рдорд╛рди рдХреЗ рдмрд┐рдирд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде URL рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЬреВрди 2015  ┬╖  32рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: psf/requests

URL рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рдорд╛рди рдирд╣реАрдВ рд╣реИ рдЕрд░реНрдерд╛рдд http://host/path/?foo рдпрд╛ http://host/path/?a=1&foo. рд╡рд░реНрддрдорд╛рди рдореЗрдВ Requests рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

In [68]: d
Out[68]: {'a': 1, 'foo': None}

In [69]: tl
Out[69]: [('a', 1), ('foo',)]

In [70]: RequestEncodingMixin._encode_params(d)
Out[70]: 'a=1'

In [71]: RequestEncodingMixin._encode_params(tl)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-71-5d4dac855108> in <module>()
----> 1 RequestEncodingMixin._encode_params(tl)

/home/f557010/jpm/local/lib/python2.7/site-packages/requests/models.pyc in _encode_params(data)
     87         elif hasattr(data, '__iter__'):
     88             result = []
---> 89             for k, vs in to_key_val_list(data):
     90                 if isinstance(vs, basestring) or not hasattr(vs, '__iter__'):
     91                     vs = [vs]

ValueError: need more than 1 value to unpack

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реЛрдирд╛:

'a=1&foo'
3.0 Breaking API Change Feature Request

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

3.0 рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо = рдирд╣реАрдВ рд╣реИ

рд╕рднреА 32 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдореВрд▓реНрдп рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдПрдкреАрдЖрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдпрд╣ рдХреЗрд╡рд▓ 'рдЯреБрдкрд▓реНрд╕ рдХреА рд╕реВрдЪреА' рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВред @sigmavirus24?

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдЕрднреА рддрдХ) рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ urllib3 urlencode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрд░рддреЗ рд╣реИрдВ

рдпрджрд┐ рд╣рдо рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред {'foo': None} "рдХрд╛рдо" рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рд╕рд╣реА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕реАрд▓рд┐рдП рд╣рдо рдкрд╣рд▓реЗ рдЗрд╕рд╕реЗ рдмрдЪрддреЗ рд░рд╣реЗред рдЙрд╕ рдиреЗ рдХрд╣рд╛, RFC 3986 рдореЗрдВ URI рдХреЗ рдХреНрд╡реЗрд░реА рднрд╛рдЧ рдХреА рдмрд╣реБрдд ... рдвреАрд▓реА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╣рдо рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрдХрд░рдг рд╣реИред =/

>>> u = urlparse.urlparse('http://example.com/foo?bar')
>>> u
ParseResult(scheme='http', netloc='example.com', path='/foo', params='', query='bar', fragment='')
>>> urlparse.parse_qs(u.query)
{}
>>> urllib.urlencode({'foo': None})
'foo=None'
>>> urllib.urlencode([('foo',)])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 1336, in urlencode
    for k, v in query:
ValueError: need more than 1 value to unpack

рд╕рдВрдмрдВрдзрд┐рдд: "рдХреЛрдИ рдирд╣реАрдВ рдорд╛рди рдХрд╛ urlencode рд╕реНрдЯреНрд░рд┐рдВрдЧ 'рдХреЛрдИ рдирд╣реАрдВ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ" - https://bugs.python.org/issue18857

@piotr-dobrogost рдХрд╛ рдЗрдирдкреБрдЯ рджреЗрдВ, @agilevic рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╡рд╣рд╛рдВ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдЯрдХреНрдХрд░ред =)

>>> import requests
>>> r = requests.get('https://httpbin.org/get', params={'foo': ''})
>>> r.request.url
'https://httpbin.org/get?foo='

рдпрд╣ рдорд╛рди рдХреЗ рдмрд┐рдирд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдиреЗ рдЬреИрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо рдХреЗ рдмрд╛рдж = рдЪрд┐рд╣реНрди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдПрдХ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕ рд╕рдЯреАрдХ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣ urllib рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорд╣рддреНрд╡ рдирд╣реАрдВ рд╣реИред HTTP рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрдИ рдЪреАрдЬреЗрдВ рдмреЗрд╣рддрд░ рдХрд░рддрд╛ рд╣реИ - рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рд╣реИред

@agilevic рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд API рдбрд┐рдЬрд╝рд╛рдЗрди рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдпрд╣рд╛рдБ рдПрдХ рдкрд╛рдЧрд▓ рд╡рд┐рдЪрд╛рд░ рд╣реИ:

>>> import requests
>>> r = requests.get('https://httpbin.org/get', params={'foo': None})
>>> r.request.url
'https://httpbin.org/get?foo'

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:

'https://httpbin.org/get'

:(

@frnhr рддреЛ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ None рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░рдирд╛ "рдХреГрдкрдпрд╛ рдЗрд╕ рдХреБрдВрдЬреА рдХреЛ рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ" рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣ рд╕рдВрдХреЗрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╣реА рдмрдиреЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрднреА-рдХрднреА рдкреНрд░рддрд┐-рдЕрдиреБрд░реЛрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рджрдмрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрд╕ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдареАрдХ рд╣реИ, рд╢рд╛рдпрдж False рдлрд┐рд░, рдпрд╛ SpecialImportableObject рдмрдЬрд╛рдп рдХреБрдЫ None ?

17 рд╕рд┐рддрдВрдмрд░ 2016 рдХреЛ 07:47 рдмрдЬреЗ, рдХреЛрд░реА рдмреЗрдирдлрд╝реАрд▓реНрдб рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@frnhr рддреЛ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рднреА рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░рдирд╛ "рдХреГрдкрдпрд╛ рдЗрд╕ рдХреБрдВрдЬреА рдХреЛ рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ" рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣ рд╕рдВрдХреЗрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╣реА рдмрдиреЗ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрднреА-рдХрднреА рдкреНрд░рддрд┐-рдЕрдиреБрд░реЛрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рджрдмрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред

@frnhr Session API рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ requests. API Session API рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдпрд╣ рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реИ, рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЖрд╡рд░рдгред

рддреЛ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХрд░ рд╕рдХрддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╣рдж рддрдХ рд╕рд╛рд░реНрдердХ рд╣реИред рдХреА-рд╡реИрд▓реНрдпреВ рдореИрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ params рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП: params="foo" ред

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рддрд░реНрдХ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд░рдо рдХреЛ рдмрд┐рдирд╛ рдореВрд▓реНрдп рдХреЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рд╣реИ?

# defined somewhere in requests
class ValuelessParam(object):
    pass
....
....

params = {'foo': 'some_param', 'bar': requests.ValuelessParam()}

requests.get('http://something', params=params)

# url should be 'http://something?foo=some_param&bar'

рдпрд╣ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдЕрджрд┐рд╢ рд╕реНрдерд┐рд░рд╛рдВрдХ рдирд╣реАрдВ рд╣реИ... рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣реБрдб рдХреЗ рддрд╣рдд ... рд╣рдо рдЙрд╕ рдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирд┐рд░реНрдорд┐рдд рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ рдЬрдмрдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдкреАрдЖрдИ рдХреЗрдиреЗрде рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рдПрдЧрд╛ред

рд╣рд╛рдБ, рдирд╣реАрдВред рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп None рдЬреИрд╕реЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реВрдВрдЧрд╛, рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред False рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

None рдпрд╛ рддреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛: рдХреЛрдбрдмреЗрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ "рд╕рддреНрд░ рд╕реНрддрд░ рдкрд░ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рдорд╛рди рдХреЛ рдЕрдирд╕реЗрдЯ рдХрд░рдиреЗ" рдХрд╛ рдЕрд░реНрде рджреЗрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛, рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдлрд╛рдпрджрд╛ рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж рдПрдХ рдЦрд╛рд▓реА рдЯрдкрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (,) ред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдзрд╛рдЧрд╛ рдПрдХ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдиреЗ рдХреА рд╕рдЯреАрдХ рдЪреАрдЬ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ "QueryAll", рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд░реЗрд╕реНрдЯрдПрдкреАрдЖрдИ рдСрдЯреЛрдореЗрд╢рди рдореЗрдВ рдореЗрд░реЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВред

рдпрджрд┐ рдЖрдк {'QueryAll': ''} рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рдореБрдЭреЗ рдЕрдВрдд рдореЗрдВ &QueryAll= рдорд┐рд▓рддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдкреАрдЖрдИ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдХрд┐ рдпрд╣ рдЦреБрд▓реЗ "=" рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, рдлрд┐рд░ рдкрд╛рд╕рд╡рд░реНрдбрд╕реНрдЯреЗрдЯ рдХреЗ рдПрдкреАрдЖрдИ рдиреЗ рдЗрд╕реЗ рддрдм рддрдХ рд▓рд┐рдпрд╛ рдЬрдм рддрдХ рдпрд╣ рдореЗрд░реА рдкреИрд░рд╛ рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рдореЗрдВ рдерд╛, рдЕрдЧрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рддреНрд░реБрдЯрд┐-рдПрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред

3.0 рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо = рдирд╣реАрдВ рд╣реИ

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ :-D рдЕрдм рддрдХ рдореЗрд░рд╛ рдкрд╛рд╕рд╡рд░реНрдбрд╕реНрдЯреЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ QueryAll= рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╕рд╛рде рддреЗрд╣ рдкреИрд░рд╛рдореНрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЯреНрд░реИрдХ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рджреЗрдЦреВрдВрдЧрд╛ :-D

рдзрдиреНрдпрд╡рд╛рдж рдХреЗрдиреЗрде!

рдЕрднреА рддрдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реБрдирд╛ рдпрд╛ рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╛рдкрд╕ рдЪрдХреНрдХрд░ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ред

рдЫреЗрдж

рд╕реЗ: рдПрд▓реЗрдХреНрд╕ рдЬрд╝рд╛рдЧреЛрд░реЛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рднреЗрдЬрд╛ рдЧрдпрд╛: рд╢рдирд┐рд╡рд╛рд░, 22 рд╕рд┐рддрдВрдмрд░, 2018 рд╕реБрдмрд╣ 10:19 рдмрдЬреЗ
рдкреНрд░рддрд┐: рдЕрдиреБрд░реЛрдз/рдЕрдиреБрд░реЛрдз [email protected]
рд╕реАрд╕реА: рдПрд▓рд╕рди, рдирд┐рдХ [email protected] ; рдЯрд┐рдкреНрдкрдгреА рдЯрд┐рдкреНрдкрдгреА @noreply.github.com
рд╡рд┐рд╖рдп: рдкреБрди: [рдЕрдиреБрд░реЛрдз/рдЕрдиреБрд░реЛрдз] рдмрд┐рдирд╛ рдорд╛рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде URL рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ (#2651)

рдЕрд░реЗ, рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рдореИрдВ рдЗрд╕ рд╕рдордп рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реВрдБред рдХреНрдпрд╛ рдХрд┐рд╕реА рдФрд░ рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрд╛ рд╣реИ?

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рд╕рд░рд▓, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЕрднреА рднреА рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдЕрдЬреАрдмред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╕реНрдЯрдо рдлреЙрд░реНрдореЗрдЯрд░/рдПрдирдХреЛрдбрд░ рдпрд╛ рдХрд┐рд╕реА рднреА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдзреНрд╡рдЬ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ/рдкрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдкреИрдЯрд░реНрди рдпрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛?

@ рд▓реБрдХрд╛рд╕рд╛ рдЖрдк рд╣рдо рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реЗ рдмреЗрд╣рддрд░ рдХреЛрдбрдмреЗрд╕ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЧреИрд░-рдмреНрд░реЗрдХрд┐рдВрдЧ-рдкрд░рд┐рд╡рд░реНрддрди, @kennethreitz рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ 2.x рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА = рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬрдм рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХреА рдЬрд╛рддреА рд╣реИред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рдзрдорд╛рдХрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп!

рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

рдЖрдк рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдХреЛрдИ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣реИ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдХрд░ рджреЗрдЧрд╛ & рдХреЗ рдмрдЬрд╛рдп рдХреЗ рд╕рд╛рде рд╢реБрд░реВ ? :

In [3]: r = requests.get("http://www.google.com", params={'test': 'true'})

In [4]: r.url
Out[4]: 'http://www.google.com/?test=true'

In [5]: r = requests.get("http://www.google.com?test2", params={'test': 'true'})

In [6]: r.url
Out[6]: 'http://www.google.com/?test2&test=true'

рдЗрд╕ рдирд┐рдпрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

{ key: undefined } рд╕реЗ ? _(рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ)_
{ key: null } рд╕реЗ ?key
{ key: '' } рд╕реЗ ?key=
{ key: 'null' } рд╕реЗ ?key=null

2020... рдФрд░ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛... SMH

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ghtyrant picture ghtyrant  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Gonzalliz picture Gonzalliz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Matt3o12 picture Matt3o12  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

NoahCardoza picture NoahCardoza  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ReimarBauer picture ReimarBauer  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ