Django基于类的视图_init__()缺少1个必需的位置参数
我试图在Django中使用基于类的视图 my URL.py: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
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”