Ожидается возврат `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
    )
Вернуться на верх