【问题标题】:Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view in Django RestFramework期望从 Django RestFramework 中的视图返回一个 `Response`、`HttpResponse` 或 `HttpStreamingResponse`
【发布时间】:2022-02-17 22:48:02
【问题描述】:

我试图在循环执行后返回一个响应,但我收到一个错误

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

【问题讨论】:

  • 您的响应在您的循环中。如果result_set 为空,则不会触发循环。则不会触发任何响应。

标签: django django-rest-framework


【解决方案1】:

试试这个:

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
    )

【讨论】:

    【解决方案2】:

    你必须像这样改变你的代码

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 2012-03-18
      • 2015-10-02
      相关资源
      最近更新 更多