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'
рдореИрдВ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдореВрд▓реНрдп рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдПрдкреАрдЖрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдпрд╣ рдХреЗрд╡рд▓ 'рдЯреБрдкрд▓реНрд╕ рдХреА рд╕реВрдЪреА' рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВред @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
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
3.0 рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо = рдирд╣реАрдВ рд╣реИ