Django基于类的视图_init__()缺少1个必需的位置参数

Django基于类的视图_init__()缺少1个必需的位置参数,django,django-views,django-class-based-views,Django,Django Views,Django Class Based Views,我试图在Django中使用基于类的视图 my URL.py: path('pie-chart/', views.pie_chart, name='pie_chart.html'), 我的观点.py class pie_chart(View): def __init__(self, labels, data): self.labels = labels self.data = data def active_sessions(self, req

我试图在Django中使用基于类的视图

my URL.py:

path('pie-chart/', views.pie_chart, name='pie_chart.html'),
我的观点.py

class pie_chart(View):
    def __init__(self, labels, data):
        self.labels = labels
        self.data = data


    def active_sessions(self, request):
        self.labels = []
        self.data = []
        queryset = Employees.objects.values('department__name').annotate(total_session=Count('employeeconnection__employeesession'))
        for item in queryset: 
            self.labels.append(item['department__name'])
            self.data.append(item['total_session'])

        return render(request, 'pie_chart.html', {
            'labels': self.labels,
            'data': self.data,
        })
我得到这个错误:

__init__() missing 1 required positional argument: 'data'

使用基于类的视图时,在url中注册此视图时必须调用as_view class方法,而不是简单地将其传递给url:

path('pie-chart/', views.pie_chart.as_view(), name='pie_chart.html'),
您需要正确使用视图方法-在视图中为GET请求设置处理程序方法:

class PieChart(View):

    def get(self, request, *args, **kwargs):
        labels = []
        data = []
        queryset = employees.objects.values('department__name').annotate(total_session=Count('employeeconnection__employeesession'))
        for item in queryset: 
            labels.append(item['department__name'])
            data.append(item['total_session'])
        return render(request, 'pie_chart.html', {
                'labels': labels,
                'data': data,
            })
然后在url.py中调用as_视图:

path('pie-chart/', views.PieChart.as_view(), name='pie_chart.html'),

您不需要重写view uu init uuu方法来从请求接收参数。

首先,您需要在url.py中使用。下一个问题-您对数据变量的期望是什么?我已将其更改为:路径'pie-chart/',pie_-chart.as_-view,name='pie_-chart',现在我得到这个错误;AttributeError:“函数”对象没有“作为视图”的属性。此数据将用于生成一个ChartJS,因此数据将是一个数字。谢谢,但我得到了以下错误:“function”对象没有属性“as_view”为什么您的视图又是一个函数?请分享完整的代码,并描述在类的_init__中需要一些参数的意图。您可以编辑您的问题以提供该信息。但此错误:“function”对象没有属性“as_view”@sansan在视图中显示您的导入。是否导入了常规视图?-从django.views导入视图我在函数之前使用@staff\u member\u required,我认为这会导致问题是的,它可以应用于基于函数的视图,而不是基于类的视图。答案可能会有帮助。我发现以下错误:“PieChart”对象没有属性“labels”