0

Django サイトでハイチャートを使用したいのですが、以下のような複雑な JavaScript コードが必要です。だから私はこのスクリプトを自分のpythonコードで取得し、適切な部分を置き換えてテンプレートに書きたいと思っていました.最初の質問は、javascriptを知らない人のためにそれを行うためのダンプ方法です. しっかり読めます。

2 番目の質問は、なぜこの文字列を置き換えることができないかということです。この文字列がこのような変数であるとしましょう。

lineChartsTemplate = """

...

...

"""

私がしようとすると

lineChartsTemplate .replace('dataCategory', dataCategory)

基本的に、dataCategory 変数を使用して dataCategory テキストを変更することを想定していますが、そのような運はありません。

ここでガイダンスが必要です。どうも。

$(function () { 
var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'container',
        type: 'bar'
    },
    xAxis: {
        categories: dataCategory
    },
    yAxis: {   
    },
    legend: {
        layout: 'vertical',
        floating: true,
        backgroundColor: '#FFFFFF',
        align: 'right',
        verticalAlign: 'top',
        y: 60,
        x: -60
    },
    tooltip: {
        formatter: function() {
            return '<b>'+ this.series.name +'</b><br/>'+
                this.x +': '+ this.y;
        }
    },
    plotOptions: {
    },
    series: [{
        data: dataList ,      
        name : 'Satışlar'}]
});
});
4

1 に答える 1

1

あなたができる最善のことは、djangoテンプレートシステムを使用して、必要な種類の置換を実現することだと思います.

テンプレートに入れるとこんな感じ。

$(function () { 
var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'container',
        type: 'bar'
    },
    xAxis: {
        categories: {{ dataCategory }}
    },
    yAxis: {   
    },
    legend: {
        layout: 'vertical',
        floating: true,
        backgroundColor: '#FFFFFF',
        align: 'right',
        verticalAlign: 'top',
        y: 60,
        x: -60
    },
    tooltip: {
        formatter: function() {
            return '<b>'+ this.series.name +'</b><br/>'+
                this.x +': '+ this.y;
        }
    },
    plotOptions: {
    },
    series: [{
        data: dataList ,      
        name : 'Satışlar'}]
});
});

次に、 dataCategory を次のようなものに置き換えることができます

return render_to_response(
    "template_with_embedded_js",
    {'dataCategory': dataCategory},
    RequestContext(request))
于 2012-10-15T22:05:33.717 に答える