簡體   English   中英

從Django列表中的項目中刪除引號的highcharts

[英]Remove quotes from an item in list in django for highcharts

我正在編寫django網絡應用程序,並且使用highcharts來打印圖形。 我必須使用一些技巧才能使其在django中正常工作,但是有些事情我只是想不通。

在這里看看:

http://jsfiddle.net/gh/get/jquery/1.9.1/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/spline-symbols/

有最高溫度和最低溫度的太陽和雲。 我想做類似的事情。

我的views.py看起來像這樣:

# load data to variable last_day_data

class Chartdata(object):
    def load_last_day():
        values = Temperature.objects.raw('SELECT...')
        for x in values:
            last_day_data['avg_temperature'].append(round(x.avg_temperature,2))
            last_day_data['date'].append('%s:00' % x.id)
    return last_day_data

# set-up highcharts variables and pass to home.html

def home(request):
    last_day_data = Chartdata.load_last_day()

    chart3 = {"renderTo": 'chart_3', "type": 'line', "height": 300,}
    title3 = {"text": 'Last 24 Hours Temperature'}
    xAxis3 = {"title": {"text": 'Date'}, "categories": last_day_data['date'], "reversed": 'true'}
    yAxis3 = {"title": {"text": 'Temperature [°C]'}}
    series3 = [{"name": 'Temperature [°C]', "data": last_day_data['avg_temperature']}]

    chart = {
    'chartID3': 'chart_3',
    'chart3': chart3,
    'series3': series3,
    'title3': title3,
    'xAxis3': xAxis3,
    'yAxis3': yAxis3
    }

    return render(request, 'home.html', chart)

快速瀏覽一下home.html(實際上只有一部分負責將傳遞的數據映射到highchart變量):

<script>
$(document).ready(function() {
$({{ chartID3|safe }}).highcharts({
    chart: {{ chart3|safe }},
    title: {{ title3|safe }},
    xAxis: {{ xAxis3|safe }},
    yAxis: {{ yAxis3|safe }},
    series: {{ series3|safe }}
});
});
</script>

現在,在加載我的網站后,上面的代碼(完全是“ series”)看起來像這樣:

series: [{'name': 'Temperature [°C]', 'data': [12.0, 13.11, 14.59, 14.6, 14.36, 14.09, 13.73....]}]

我要做的是:找到最高價值並替換為(根據jsfiddle):

{{y: highest_value, marker: {symbol: 'url(sun url)'}}

找到最高價值很容易,可以說我將其存儲在“索引”下的“價值”中,所以我這樣做:

last_day_data['avg_temperature'][index] = "{y: %s, marker: {symbol: 'url(sun url)'}}" % value

但是圖形無法正確顯示並查看站點源:

 series: [{'name': 'Temperature [°C]', 'data': [12.0, 13.11, 14.59, "{y: 14.6, marker: {symbol: 'url(sun url)'}}", 14.36, 14.09, 13.73, 13.29, 12.86, 12.82.... ]}]

結論:它不能使用引號,而且我也不知道如何消除引號。 有什么想法可以快速,輕松,輕松地實現它嗎?

終於弄清楚了,將其更改為:

last_day_data['avg_temperature'][index_max] = "{\"y\": %s, \"marker\":" \
                                               " {\"symbol\": \"url(%ssun.png)\"}" \
                                                  "}" % (value_max, settings.STATIC_URL)

在home.html中:

var series = {{ series3|safe }};
var obj = series[0]['data'];

for(var x in obj){
 if(typeof obj[x] === "string") obj[x] = JSON.parse(obj[x]);
}
series[0]['data'] = obj;
$({{ chartID3|safe }}).highcharts({
    chart: {{ chart3|safe }},
    title: {{ title3|safe }},
    xAxis: {{ xAxis3|safe }},
    yAxis: {{ yAxis3|safe }},
    series: series
});

現在,它可以完美運行了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM