我正在开发Django项目,我有一个应用程序,其中有一个下拉页面和一个从数据生成的图表(从数据库中查询并传递到API网址)。我使用基于类的视图和APIView,并有一个get方法,它创建一个响应将一些Json数据传递到url。我在views.py设置和工作中有以下课程。
views.py
class ChartData(APIView):
authentication_classes = []
permission_classes = []
def get(self, request, format=None):
#generated through code
data = {
"labels": all_times,
"default": all_data,
}
return Response(data)
为了能够访问这些数据,我将我的网址设置为:
url(r'^display/api/chart/data/$', views.ChartData.as_view()),
来自API的这些数据用于在我的此应用程序的模板html中生成ChartJS图。设置图表,以便从url display / api / chart / data /中查找Json数据,并使用Ajax填充自身。以下是图表的生成方式:
<script>
{% block jquery %}
var endpoint = 'display/api/chart/data/'
var defaultData = []
var defaultLabels = [];
$.ajax({
method: "GET",
url: endpoint,
success: function(data){
defaultLabels = data.labels
defaultData = data.default
console.log(data)
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: defaultLabels,
datasets: [{
label: '# Measurable',
data: defaultData,
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
},
error: function(error_data){
console.log("error")
console.log(error_data)
}
})
{% endblock %}
</script>
我在同一个视图文件中还有另一种方法如下:
views.py
def DropdownDisplay(request):
items= #query from database
if (request.method == 'POST' and request.is_ajax()):
print(request.POST)
return render(request, 'DisplayData/Display.html',{'dropdown':items})
此方法用于在页面中生成下拉列表。这个url设置在相同的urls.py文件中,如下所示:
url(r'^graph/', views.DropdownDisplay, name='Display-Dropdown')
注意:它们位于相同的views.py和urls.py文件中,我在这篇文章中将它们分开以进行格式化。
现在,我遇到了一个问题。当我进入/显示时,图表可以工作,但下拉不会。当我进入/ display / graph时,下拉工作但图表没有。我可以告诉它是因为在我的urls.py中,我为每个类和方法都有单独的URL,因此它们只能在各自的URL下工作。
但是,我想将它们组合在一起,以便图形的生成和下拉列表的工作在一个url下工作,这将是/ display。
我怎样才能实现这个目标?
答案 0 :(得分:0)
如果您希望它们成为同一页面的一部分,则两个功能都应位于一个视图下的表单内。如果没有,则不应该有一个单独的URL用于两个单独的功能。你的问题有点含糊不清。如果您能清楚地说明功能,那将会很有帮助。