Выполнение только одной строки в цикле
Я пытаюсь выполнить все строки в полезной нагрузке через цикл, но после выполнения первой строки я получаю ошибку 'str' object has no attribute 'get'
, что происходит для всех остальных строк в API.
payload:
[
0: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 1, Answer: "2", SID: "0",…}
1: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 2, Answer: "2", SID: "0",…}
2: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 3, Answer: "2", SID: "0",…}
3: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 4, Answer: "2", SID: "0",…}
4: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 5, Answer: "5", SID: "0",…}
5: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 6, Answer: "5", SID: "0",…}
6: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 7, Answer: "3", SID: "0",…}
7: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 8, Answer: "3", SID: "0",…}
]
Здесь я получаю случайное число, такое как 8938
для первой строки и остальные строки я должен получить как 0
views.py
@api_view(['POST'])
def SaveUserResponse(request):
if request.method == 'POST':
for ran in request.data:
auditorid =ran.get('AuditorId')
print('SaveUserResponse auditorid---', auditorid)
ticketid = ran.get('TicketId')
sid = 0
print('sid--', sid)
qid = ran.get('QId')
print('qid---', qid)
answer = ran.get('Answer')
print('answer-->', answer)
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_SaveAuditResponse] @auditorid=%s,@ticketid=%s,@qid=%s,@answer=%s,@sid=%s',
(auditorid,ticketid,qid,answer, '0',))
result_st = cursor.fetchall()
return Response(result_st[0][0])
return Response(sid)
Прежде всего, ваша полезная нагрузка, как уже было сказано кем-то другим, не является корректной. Сказав это, как правило, вы всегда должны проверять данные и поток данных, чтобы убедиться, что ваша полезная нагрузка имеет правильный формат и используется надлежащим образом. Вот пример, созданный на основе вашей полезной нагрузки, но измененный таким образом, чтобы быть похожим на структуру данных Python DS (Data Structure), известную как List.
test_data = [
{"AuditorId": 122, "Agents": "", "Supervisor": "", "TicketId": "12111", "QId": 1, "Answer": "2", "SID": "0"},
{"AuditorId": 122, "Agents": "", "Supervisor": "", "TicketId": "12111", "QId": 2, "Answer": "2", "SID": "0"},
{"AuditorId": 122, "Agents": "", "Supervisor": "", "TicketId": "12111", "QId": 3, "Answer": "2", "SID": "0"},
{"AuditorId": 122, "Agents": "", "Supervisor": "", "TicketId": "12111", "QId": 4, "Answer": "2", "SID": "0"},
{"AuditorId": 122, "Agents": "", "Supervisor": "", "TicketId": "12111", "QId": 5, "Answer": "5", "SID": "0"},
{"AuditorId": 122, "Agents": "", "Supervisor": "", "TicketId": "12111", "QId": 6, "Answer": "5", "SID": "0"},
{"AuditorId": 122, "Agents": "", "Supervisor": "", "TicketId": "12111", "QId": 7, "Answer": "3", "SID": "0"},
{"AuditorId": 122, "Agents": "", "Supervisor": "", "TicketId": "12111", "QId": 8, "Answer": "3", "SID": "0"},
]
С помощью приведенных выше данных вы можете легко выполнить цикл и в конечном итоге использовать get для того, чтобы получить нужное значение из словаря. Ключевым моментом здесь является то, что вы не можете использовать get, если целевой элемент не является элементом типа Dict.
Наконец, результатом вашего цикла будет что-то вроде следующего, где get может быть использован для каждой строки