Django Typeerror:\uuuu init\uuuu()接受1个位置参数,但给出了2个。我已经看到了许多解决这个错误的方法,但没有一个与我的情况相匹配
我已经看到了许多解决这个错误的方法,但是没有一个与我的情况相匹配。我确信init类会得到多个参数,但我不知道如何解决这个问题 我的页面有一个下拉菜单。从下拉列表中选择值后,区域列表将以列表的形式出现。当我点击列表中的一个项目时,一个图表应该出现在同一页上。因此,我所做的是,我创建了一个初始表单(类MonthlySalesGraphs),填充后将呈现下一页,即view MonthlSalesGraphs_2,它与MonthlySalesGraph相同,但唯一的区别是它显示图形。但很明显,当这个错误突然出现时,这是不起作用的 回溯:Django Typeerror:\uuuu init\uuuu()接受1个位置参数,但给出了2个。我已经看到了许多解决这个错误的方法,但没有一个与我的情况相匹配,django,django-rest-framework,Django,Django Rest Framework,我已经看到了许多解决这个错误的方法,但是没有一个与我的情况相匹配。我确信init类会得到多个参数,但我不知道如何解决这个问题 我的页面有一个下拉菜单。从下拉列表中选择值后,区域列表将以列表的形式出现。当我点击列表中的一个项目时,一个图表应该出现在同一页上。因此,我所做的是,我创建了一个初始表单(类MonthlySalesGraphs),填充后将呈现下一页,即view MonthlSalesGraphs_2,它与MonthlySalesGraph相同,但唯一的区别是它显示图形。但很明显,当这个错误
Traceback (most recent call last):
File "C:\Users\Test\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\django\core\handlers\exception.py", line 35, in inner
response = get_response(request)
File "C:\Users\Test\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\django\core\handlers\base.py", line 128, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\Test\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\django\core\handlers\base.py", line 126, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Test\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\django\views\generic\base.py", line 69, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\Test\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\django\views\generic\base.py", line 89, in dispatch
return handler(request, *args, **kwargs)
File "D:\hemanth\intern2\intern\sales\views.py", line 329, in get
form = self.form_class(request.GET)
TypeError: __init__() takes 1 positional argument but 2 were given
[17/Jul/2018 12:35:39] "GET /sales/monthly-sales/graphs/L11/ HTTP/1.1" 500
73978
views.py
class MonthlySalesGraphs(generic.TemplateView):
form_class = MonthlySalesGraphs
template_name = 'sales/MonthlySalesGraphs.html'
def get(self, request):
if request.user.is_authenticated:
form = self.form_class(request.GET)
if form.is_valid():
zone_code_ = form.cleaned_data['zones']
regions = Region.objects.filter(zone_code=zone_code_)
return render(request, 'sales/MonthlySalesGraphs.html',
{'form': form, 'regions': regions})
return render(request, 'sales/MonthlySalesGraphs.html', {'form':
form})
else:
return redirect('/sales/')
class MonthlySalesGraphs_2(generic.TemplateView):
form_`enter code here`class = MonthlySalesGraphs
template_name = 'sales/MonthlySalesGraphs_2.html'
def get(self, request, region_id):
if request.user.is_authenticated:
form = self.form_class(request.GET)
if form.is_valid():
zone_code_ = form.cleaned_data['zones']
regions = Region.objects.filter(zone_code=zone_code_)
return render(request, 'sales/MonthlySalesGraphs_2.html',
{'form': form, 'regions': regions})
return render(request, 'sales/MonthlySalesGraphs.html', {'form':
form})
else:
return redirect('/sales/')
模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Monthly Sales</title>
{% include 'sales/base.html' %}
{% include 'sales/include.html' %}
</head>
<body>
<div align="center">
<form >
{% include 'sales/form_template.html' %}
<div align="center">
<input type="submit" value="Apply" style="padding: 5px;" >
</div>
</form>
</div>
<div align="left">
<ol>
{% for r in regions %}
<a href="{% url 'sales:mon_sales_graphs_2' r.region_code %}">
<li>{{ r }}</li></a>
{% endfor %}
</ol>
</div>
<table cellpadding="50px">
<tc>
<td>
<div style="width: 500px; height: 500px">
<canvas id="myChart" width="400" height="400"></canvas>
</div>
</td>
</tc>
<tc>
<td>
<div style="width: 500px; height: 500px">
<canvas id="myChart2" width="400" height="400"></canvas>
</div>
</td>
</tc>
</table>
<script>
{% block jquery %}
var endpoint='api/data/'
var defaultData = []
var labels = []
$.ajax({
method: "GET",
url: endpoint,
success: function(data) {
labels = data.labels
defaultData = data.default
setChart()
},
error: function(error_data) {
console.log("error");
console.log(error_data);
},
})
function setChart(){
var ctx = document.getElementById("myChart").getContext('2d');
var ctx2 = document.getElementById("myChart2").getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [{
label: 'Sales',
data: defaultData,
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
var myChart2 = new Chart(ctx2, {
type: 'line',
data: {
labels: labels,
datasets: [{
label: 'Sales',
data: defaultData,
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 206, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(255, 159, 64, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
'rgba(54, 162, 235, 1)',
'rgba(255, 206, 86, 1)',
'rgba(75, 192, 192, 1)',
'rgba(153, 102, 255, 1)',
'rgba(255, 159, 64, 1)'
],
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
}
{% endblock %}
</script>
</body>
</html>
编辑:
url.py
url(r'^$', login, {'template_name': 'sales/login.html'}, name='login'),
url(r'^home/$', views.HomePage.as_view(), name='home-page'),
url(r'^csv-import/$', views.CSVimport, name='csv-import'),
url(r'^monthly-sales/zone-ro/$', views.MonthlySales_Zone_RO.as_view(),
name='mon_sales_z_ro'),
url(r'^monthly-sales/zone-date/$', views.MonthlySales_Zone_Date.as_view(),
name='mon_sales_z_d'),
url(r'ajax/load-regions/$', views.load_regions, name='zone-ro-dropdown'),
url(r'^monthly-sales/graphs/$', views.MonthlySalesGraphs.as_view(),
name="mon_sales_graphs"),
url(r'^monthly-sales/graphs/(?P<region_id>[A-Z][0-9][0-9]*)/$',
views.MonthlySalesGraphs_2.as_view(), name="mon_sales_graphs_2"),
url(r'^monthly-sales/graphs/(?P<region_id>[A-Z][0-9][0-9]*)/api/data/$',
views.MonthlySalesGraphsAPI.as_view(), name="mon_sales_graphs_api"),
url(r'^$',login,{'template_name':'sales/login.html'},name='login'),
url(r“^home/$”,views.HomePage.as_view(),name='home-page'),
url(r“^csv导入/$”,views.CSVimport,name='csv-import'),
url(r“^monthly sales/zone ro/$”,views.MonthlySales\u zone\u ro.as\u view(),
name='mon_sales_z_ro'),
url(r“^monthly sales/zone date/$”,views.MonthlySales\u zone\u date.as\u view(),
name='mon_sales_z_d'),
url(r'ajax/load regions/$,views.load_regions,name='zone-ro-dropdown'),
url(r“^monthly sales/graphs/$”,views.MonthlySalesGraphs.as_view(),
name=“mon_sales_graphs”),
url(r'^月销售额/图表/(?P[A-Z][0-9][0-9]*)/$,
views.monthlysalegraphs_2.as_view(),name=“mon_sales_graphs_2”),
url(r'^monthly sales/graphs/(?P[A-Z][0-9][0-9]*)/api/data/$),
views.MonthlySalesGraphsAPI.as_view(),name=“mon_sales_graphs_api”),
基于类的视图与表单名称相同,因此Django采用基于类的视图。此外,基于类的视图的Python语法无效。@WillemVanOnsem您所说的无效Python语法是什么意思?表单`在这里输入code`class=MonthlySalesGraphs
…但无论如何。我建议将Form
后缀添加到MonthlySalesGraphs
Form类中,这样它就不会与基于类的视图的类名冲突。
url(r'^$', login, {'template_name': 'sales/login.html'}, name='login'),
url(r'^home/$', views.HomePage.as_view(), name='home-page'),
url(r'^csv-import/$', views.CSVimport, name='csv-import'),
url(r'^monthly-sales/zone-ro/$', views.MonthlySales_Zone_RO.as_view(),
name='mon_sales_z_ro'),
url(r'^monthly-sales/zone-date/$', views.MonthlySales_Zone_Date.as_view(),
name='mon_sales_z_d'),
url(r'ajax/load-regions/$', views.load_regions, name='zone-ro-dropdown'),
url(r'^monthly-sales/graphs/$', views.MonthlySalesGraphs.as_view(),
name="mon_sales_graphs"),
url(r'^monthly-sales/graphs/(?P<region_id>[A-Z][0-9][0-9]*)/$',
views.MonthlySalesGraphs_2.as_view(), name="mon_sales_graphs_2"),
url(r'^monthly-sales/graphs/(?P<region_id>[A-Z][0-9][0-9]*)/api/data/$',
views.MonthlySalesGraphsAPI.as_view(), name="mon_sales_graphs_api"),