Django ValueError 视图 todo_lists.views.visualisation 没有返回 HttpResponse 对象。它返回 None 而不是

Posted

技术标签:

【中文标题】Django ValueError 视图 todo_lists.views.visualisation 没有返回 HttpResponse 对象。它返回 None 而不是【英文标题】:Django ValueError The view todo_lists.views.visualisation didn't return an HttpResponse object. It returned None instead 【发布时间】:2021-12-10 01:33:44 【问题描述】:

每个人。我这里有views.py,我想计算不同状态的任务并输出到chart.js 饼图。我尝试了很多方法,但没有一个有效。我有一个错误,说我的视图 def 没有返回 HttpResponse,谁能告诉我它是什么,好吗?我在 html 中使用了模板标签。

谢谢。

views.py

def visualisation(request, project_id):

    project = Project.objects.get(id=project_id)

    counts_data = Todo.objects.annotate(
        to_do_count = Count('id', filter=Q(status='to_do')),
        in_progress_count = Count('id', filter=Q(status='in_progress')),
        done_count = Count('id', filter=Q(status='done'))
        ).order_by('-to_do_count')

    context = 'counts_data', counts_data
    return render(request, 'todo_lists/progress.html', context)

html

    data: 
        labels: [1,2,3],
        
        datasets: [
            label: '# of Votes',

            data:[% for todo in counts_data %  todo , % endfor %],,
            
            backgroundColor: [
                'rgba(255, 99, 132, 0.2)',
                'rgba(54, 162, 235, 0.2)',
                'rgba(255, 206, 86, 0.2)'
            ],
            borderColor: [
                'rgba(255, 99, 132, 1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)'
            ],
            borderWidth: 1
        ]
    ,

【问题讨论】:

您的视图看起来不错,因为错误消息是您拥有模板并已导入渲染。您是否添加了 print 语句以确保您实际上正在调用该函数? (与名为visualizations 的剩余函数相反?我以前犯过这个错误,但从你给出的代码中很难判断。 @sintribu 是的,你提醒了我,原来我有一个同名的函数,试图对我的代码做一些实验但忘记删除它。如果你把它作为一个答案我会接受,干杯兄弟 谢谢 我很感激这个提议,但这并不是什么大不了的事。很高兴为我付出我的痛苦哈哈。干杯! 【参考方案1】:

有一个def函数同名且没有return语句,删除它,问题就解决了。 @sintribu 欢呼

【讨论】:

以上是关于Django ValueError 视图 todo_lists.views.visualisation 没有返回 HttpResponse 对象。它返回 None 而不是的主要内容,如果未能解决你的问题,请参考以下文章

python django ajax:ValueError:视图没有返回 HttpResponse 对象。它返回 None 而不是

ValueError 精确查找的 QuerySet 值必须限制为在 django 视图上使用切片的一个结果

Django ValueError:无法查询“用户”:必须是“个人资料”实例

Django ValueError: invalid literal for int() with base 10: 'xxx'解决办法

django:ValueError - 无法序列化

使用 statprof 分析 Django 视图 - 不能在线程中使用信号