django - 基于 Django 分类的视图 __init__() 缺少 1 个必需的位置参数
问题描述
我正在尝试在 Django 中使用基于类的视图!
我的 urls.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'
解决方案
您需要正确使用View
方法 - 为 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,
})
然后调用as_view()
urls.py:
path('pie-chart/', views.PieChart.as_view(), name='pie_chart.html'),
而且您无需重写视图__init__
方法即可从请求中接收参数。
推荐阅读
- javascript - 获取一个数组,其中包含数组内对象的所有键
- javascript - 使用 Lodash 在嵌套数组中查找属性以及其他操作
- python - 可以在运行时使 python 脚本转储其当前列表吗?
- python - 使用 Intel Pin 检测 Python 脚本
- php - 通过jquery访问api
- keras - 如何在具有不同时间步长的编码器和解码器的 keras 中为 Seq2Seq 添加自定义注意层
- spring-boot - Springboot 2.0/Camel/Active MQ 用 ActiveMQComponent / ActiveMQConnectionFactory 抛出异常
- java - Core JAVA:循环整个程序,基于用户输入
- jquery - 无法使用 Jquery 发布 nodeJS 应用程序
- amazon-web-services - aws 代码管道