Отображение диаграммы ChartJS в Django

В настоящее время я пытаюсь реализовать граф в своем приложении django. Я создал HTML-страницу для отображения жестко запрограммированных деталей из моего класса views.py. Однако когда я загружаю веб-страницу, я вообще не вижу диаграммы. Вот как я пытался реализовать график:

Взгляды

В этом классе я создаю представления, которые будут отображаться на графике. Я пока жестко закодировал некоторые данные, просто чтобы график заработал.

User = get_user_model()
#where i am viewing the chart, calling the html page.
class ChartView(View):
    def get(self, request, *args, **kwargs):
        return render(request, 'nutrition/chart.html', {"users": 10})



class ChartData(APIView):
    authentication_classes = []
    permission_classes = []
#hard-coded data that i am trying to display on the chart
    def get(self, request, format=None):
        qs_count = User.objects.all().count()
        labels = ["Users", "Blue", "Yellow", "Green", "Purple", "Orange"]
        default_items = [qs_count, 12, 22, 13, 11, 15]
        data = {
            "labels": labels,
            "default": default_items,
        }
        return Response(data)

URL

URL-адреса, которые я использую для отображения страниц, являются расширением для nutrition/, URL-адреса.

urlpatterns = [
#url for the webpage to display the chart
    url('^chart/$', ChartView.as_view(), name='chart'),
#url to show the data using the django rest_framework
    url('^api/chart/data/$', ChartData.as_view()),

HTML

Здесь я пытаюсь отобразить диаграмму. Я вызываю переменные из класса представления и рисую их на гистограмме.

<script>
    {% block jquery %}
        var endpoint = '/api/chart/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.info("error")
                console.info(error_data)

            }
        })

        function setChart() {
              var ctx = document.getElementById("myChart");
            var myChart = new Chart(ctx, {
                type: 'bar',
                data: {
                    labels: labels,
                    datasets: [{
                        label: '# of Votes',
                        data: defaultData,
                    }]
                },

            });
        }


    {% endblock %}
</script>

{% block body %}
    <div class = "row">
    <div class = "container">
        <div class = "col-sm-12" url-endpoint = "'{% url "nutrition:api-data" %}">
            <h1>Nutrition Chart</h1>
            <canvas id = "myChart" width = "400" height = "400"></canvas>
        </div>
        </div>
    </div>
{% endblock body %}

Я следил за учебником, который я связал здесь: https://thewikihow.com/video_B4Vmm3yZPgc

Редактировать

Это снимок экрана с добавленной сплошной рамкой, показывающей, где должен отображаться график. Отображение диаграммы ChartJS в Django

Получаете ли вы данные json с сервера?

oneor0 19.04.2018 16:22

Если ваши URL-адреса являются расширением /nutrition, то ваш endpoint, вероятно, должен быть равен /nutrition/api/chart/data/

oneor0 19.04.2018 16:28

Приносим свои извинения, конечно, конечная точка должна быть равной этому. Однако с учетом этого диаграмма все еще не отображается на веб-странице. Я добавил сплошную рамку и вижу, где должна отображаться диаграмма. Я приложил скриншот, показывающий это.

ailinmc 20.04.2018 12:16

Это ваш полный HTML? Где ваш импорт javascript chartjs?

afonso 20.04.2018 12:33

Это не мой полный HTML, я удалил такую ​​информацию, как цвет фона и т. д., Подумал, что в этом нет необходимости. Мои импортированные скрипты находятся в файле base.html, который расширен в этом html-файле.

ailinmc 20.04.2018 12:58
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
5
799
1

Ответы 1

вы пробовали var endpoint = 'api / chart / data /' вместо var endpoint = '/ api / chart / data /' в своем html?

Другие вопросы по теме