Pierwszy plakat, długoletni czytelnik. Spędziłem dość czasu szukając odpowiedzi na to, co sprawia, że myślę, że jest to coś fundamentalnego, czego mi brakuje.Przekazywanie bazy danych Django do Highscharts przez JSON
Próbuję pobrać dane przechowywane w tabeli bazy danych i przekazać je do wyświetlania w wykresie Highcharts. Nie dostaję żadnych błędów od Django lub przez klienta podczas sprawdzania źródła.
Stosując Django 1.7 i 3.4 Pyton
views.py:
#unit/views.py
from django.http import JsonResponse
from django.shortcuts import render
from unit.analysis_funcs import ChartData
def chart_data_json(request):
data = {}
data['chart_data'] = ChartData.get_data()
return JsonResponse(data, safe = True)
def plot(request):
return render(request, 'unit/data_plot.html', {})
get_data() Zastosowanie:
#unit/analysis_funcs.py
from unit.models import CheckValve
class ChartData(object):
def get_data():
data = {'serial_numbers': [], 'mass': []}
valves = CheckValve.objects.all()
for unit in valves:
data['serial_numbers'].append(unit.serial_number)
data['mass'].append(unit.mass)
return data
Wzór:
<!-- templates/unit/data_plot.html -->
{% extends "base.html" %}
{% block extrahead %}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
{% endblock %}
{% block rootcontainer %}
<div id="container" style="width:100%; height:400px;"></div>
{% endblock %}
{% block overwrite %}
<!-- Overwrite the base.html jQuery load and put in head for Highcharts to work -->
{% endblock %}
{% block extrajs %}
<script>
$(document).ready(function() {
var options = {
chart: {
renderTo: 'container',
type: 'line'
},
series: [{}]
};
var ChartDataURL = "{% url 'chart_data_json' %}";
$.getJSON('ChartDataURL', function(data) {
options.xAxis.categories = data['chart_data']['serial_numbers'];
options.series[0].name = 'Serial Numbers';
options.series[0].data = data['chart_data']['mass'];
var chart = new Highcharts.Chart(options);
});
});
</script>
{% endblock %}
Wreszcie adresy URL:
from unit import views, graphs
urlpatterns = patterns('',
url(r'^chart_data_json/', views.chart_data_json, name = 'chart_data_json'),
url(r'^plot/', views.plot, name = 'plot'),
)
Wszystko wydaje się działać, ale wykres Highchart nie renderuje. Myślę, że to w jaki sposób przenoszę dane JSON z view.py do template.html, ale po tak długim wpatrywaniu się w to, idę z zeza.
Każda pomoc będzie świetna!
Czy otrzymujesz błędy w konsoli? –
@SebastianBochan Brak błędów po pobraniu witryny. Uzyskaj typową odpowiedź 200 zarówno na główny adres URL, jak i adres URL wywołujący dane. – peteza33