Почему в Django client.post значения arg вложены в списки?
Я тестирую свой api с помощью Django следующим образом:
result = self.client.post( reverse(path), { "arg1":"value" })
Внутри представления, я ставлю точку останова.
@api_view(["POST"])
def post_arg(request):
breakpoint()
Но когда я печатаю данные POST, значения были добавлены в списки.
(Pdb) request.POST
{ 'arg1': ['value'] }
В этом примере только один arg, но если я добавляю больше, то каждый из них добавляется в список. Я не думаю, что это происходит, когда мой фронтенд публикует данные, так почему же это происходит здесь? И есть ли способ не добавлять значения в список?
Я не думаю, что это происходит, когда мой фронтенд публикует данные.
Один и тот же ключ может быть несколько раз связан со значением, например, когда вы используете флажок с:
<input type="checkbox" name="foo" value="bar">
<input type="checkbox" name="foo" value="qux">
Если вы установите оба флажка, это добавит foo=bar&foo=qux
в тело запроса, так что один и тот же ключ (foo
) будет связан и с bar
, и с qux
.
Если вы используете request.POST['foo']
, он вернет значение последней записи, поэтому 'qux'
. Вы также можете использовать request.POST.getlist('foo')
, это вернет все значения для этого ключа в списке, так что ['bar', 'qux']
.