#django
#django
Вопрос:
У меня есть входящий ajax-запрос, если я напечатаю сообщение, подобное этому:
print("post_data %s" % request.POST)
Я понимаю это:
post_data <QueryDict: {'csrfmiddlewaretoken': ['...'], 'contact_method 1[]': ['Facebook', 'https://www.facebook.com/aandro.veinilla/', 'Send me a message'], 'contact_method 2[]': ['Whatsapp', ' 593998375445', 'contact me after 8pm']}>
Как вы можете видеть, это dict с некоторыми ключами, а значения представляют собой списки. Но если я напечатаю это так:
for k, v in request.POST.items():
print("k: %s" % k)
print("v: %s" % v)
Я понимаю это:
k: csrfmiddlewaretoken
v: ...hEm9OcUE
k: contact_method 1[]
v: Send me a message
k: contact_method 2[]
v: contact me after 8pm
Он печатает только последний элемент в каждом списке, почему? Мне нужно перебрать все полученные значения, а не только последний элемент в списке.
Также одна странная вещь, которая может иметь какое-то отношение (не уверен), заключается в том, что django добавляет ‘[]’ к ключам словаря. Я уверен, что я не делал этого в js.
Ответ №1:
QueryDict.items(...)
Единственное возвращает последнее значение. Вероятно, вам следует использовать QueryDict.lists(...)
for k, v in request.POST.lists():
print("k: %s" % k)
print("v: %s" % v)
Обратите внимание, что это вернет список, даже если в request.POST
Комментарии:
1. Это решило проблему. Тем не менее, я все еще думаю
.items()
, что имеет неадекватное поведение.