Django:在视图内部组合方法和类以共享同一url

Django:在视图内部组合方法和类以共享同一url,django,Django,我正在Django项目中工作,我有一个应用程序,它有一个带有下拉列表的页面和一个从数据生成的图表(从数据库查询并传递到API url)。我使用基于类的视图和APIView,有一个get方法,它创建一个响应,将一些Json数据传递到url中。我在我的views.py中设置并运行了以下类 views.py class ChartData(APIView): authentication_classes = [] permission_classes = [] def get

我正在Django项目中工作,我有一个应用程序,它有一个带有下拉列表的页面和一个从数据生成的图表(从数据库查询并传递到API url)。我使用基于类的视图和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)
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设置为:

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>
此方法用于在页面中生成下拉列表。此url设置在相同的url.py文件中,如下所示:

url(r'^graph/', views.DropdownDisplay, name='Display-Dropdown')
注意:它们在同一个views.py和url.py文件中,为了便于格式化,我在本文中将它们分开

现在,我遇到了一个问题。当我转到/display时,图形工作,但下拉菜单不工作。当我转到/display/graph时,下拉菜单起作用,但图形不起作用。我知道这是因为在我的url.py中,每个类和方法都有单独的url,所以它们只能在各自的url下工作

但是,我希望将它们结合起来,以便图形的生成和下拉列表的填充都在一个url下工作,该url将是/display


如何实现这一点?

如果希望它们成为同一页面的一部分,则两个功能应位于同一视图下的表单中。如果没有,则两个单独的功能不应该只有一个url。你的问题有点模棱两可。如果您能清楚地说明功能,将非常有用。

基本上,我需要通过ChartData类生成REST API,但我还需要调用DropdownDisplay方法来填充下拉列表。我在问如何将它们结合起来,以便在同一页中同时完成这两项工作。