Ваш код делает именно то, что вы говорите, а именно:
- Используйте параметры POST вместо GET,
- Отформатируйте данные параметра как json.
Вместо этого вы хотите использовать параметры GET, отформатированные нестандартным способом.
Возможно, что-то подобное может помочь вам в следующем:
def encode_params(params, head = None):
output = []
if head is None:
head = ''
if isinstance(params, dict):
for k,v in params.items():
output.extend(encode_params(v, '%s[%s]' % (head,k)))
elif isinstance(params, list) or isinstance(params, tuple):
for k,v in enumerate(params):
output.extend(encode_params(v, '%s[%s]' % (head,k)))
else:
return ['%s=%r' % (head, params)]
return output
encoded_args = ','.join([','.join(encode_params(v, k)) for k,v in params.items()])
Это, безусловно, может быть улучшено дальше, но это может дать вам преимущество. Вам нужно будет добавить некоторые проверки работоспособности, такие как urllib.parse.quote_plus(...)
или что-то, что предотвращает непосредственное добавление аргументов, таких как '] ['.