İlk kez poster, uzun süre okuyucusu. Bir süreliğine cevap aramak için harcadım, ki bu da bana temel bir şey olduğunu düşünmüyorum.Django Veritabanı Queryset'in JSON ile Highcharts'a Aktarılması
Bir veritabanı tablosunda tutulan verileri çekmeye çalışıyorum ve bir Highcharts grafiğinde görüntülemek için iletiyorum. Kaynak incelerken Django'dan veya müşteri tarafından herhangi bir hata almıyorum.
kullanılması: Django 1.7 ve Python 3.4
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() işlevi:
#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
şablonu:
<!-- 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 %}
Sonunda 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'),
)
Her şey çalışıyor gibi görünüyor, ancak Highchart grafiği oluşmuyor. JSON verilerini nasıl view.py'den template.html'ye taşıdığımı düşünüyorum, ancak o kadar uzun bir süre sonra baktığımda çapraz gözlere bakıyorum.
Herhangi bir yardım harika olurdu!
Konsolda herhangi bir hata var mı? –
@SebastianBochan Site alındığında hata yok. Hem ana URL'ye hem de URL'yi arayarak normal bir 200 yanıt alın – peteza33