Ожидается возврат `Response`, `HttpResponse` или `HttpStreamingResponse` из представления в Django RestFramework
Я пытаюсь вернуть ответ после выполнения цикла, но получаю ошибку
AssertionError at Data/CurrentRunningActivityForAudit/10
Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
когда я добавил еще один возвращаемый ответ вне цикла, он показывает пустой массив, т.е.[ ] возвращает пустой ответ
`
views.py:
def CurrentRunningActivity(UserID):
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_GetCurrentRunningActivityAudit] @UserId=%s',(UserID,))
result_set = cursor.fetchall()
IsActive = 'true'
for row in result_set:
data = []
data.append({
'TaskId':row[0],
'TaskName' : row[1],
'Source' : row[2],
'Requester' : row[3],
'type' : row[4],
'IsActive':IsActive,
})
return Response(data[0], status=status.HTTP_200_OK)
когда я перемещаю ответ возврата за пределы цикла, он отображается как local variable 'data' referenced before assignment
Вы должны изменить свой код следующим образом
def CurrentRunningActivity(UserID):
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_GetCurrentRunningActivityAudit] @UserId=%s',(UserID,))
result_set = cursor.fetchall()
IsActive = 'true'
data = [] # changed
for row in result_set:
data.append({
'TaskId':row[0],
'TaskName' : row[1],
'Source' : row[2],
'Requester' : row[3],
'type' : row[4],
'IsActive':IsActive,
})
return Response(data[0], status=status.HTTP_200_OK)
Попробуйте это:
def CurrentRunningActivity(UserID):
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_GetCurrentRunningActivityAudit] @UserId=%s',(UserID,))
result_set = cursor.fetchall()
IsActive = 'true'
data = []
for row in result_set:
data.append({
'TaskId': row[0],
'TaskName' : row[1],
'Source' : row[2],
'Requester' : row[3],
'type' : row[4],
'IsActive': IsActive,
})
return Response(
data[0] if data else [],
status=status.HTTP_200_OK
)