0

Djangoプロジェクトのワークフローは次のようになります。

  • ユーザーがチャート生成のパラメーターを指定します
  • チャートはmatplotを使用して生成されます
  • その後、チャートはAJAXを使用してユーザーに提供されます

さまざまなパラメータが異なるため、生成される可能性のあるチャートの数は非常に多いため、事前にチャートを生成して静的に提供することはできません。

matplotコマンドのshow()とsavfig()も、このタスクには適していないようです。

どうすればこれを達成できますか?

4

1 に答える 1

1

大まかにこのように:

import django.http
import matplotlib.pyplot

# This is your view function, hook it up to your URLconf.
def chart(request, *args):
    # ...extract chart parameters from request.GET and/or args...
    fig = matplotlib.pyplot.figure(...)
    # ...draw your chart, invoking methods on fig...
    response = django.http.HttpResponse(content_type='image/png')
    fig.savefig(response, format='png')
    return response

これをユーザーに表示するためにAJAXをどのように使用するかわかりません。適切な属性imgを持つ要素を挿入する方が簡単だと思います。srcjQueryを使用すると、次のようになります。

var src = '/chart/?' + $.param({
        // This all ends up in request.GET
        type: 'something',
        foo: 'bar',
        myParam: 123
    });
$('#displayArea').empty().append($('<img>').attr('src', src));

ただし、AJAXが必要な場合は、もちろんを使用できます$.ajax

渡されたパラメーターによってグラフが完全に定義されており、ユーザーが同じグラフを数回表示したい場合は、サーバーから同じ画像を再要求しないように、リベラルなクライアントキャッシュヘッダーを設定することを検討してください。ただし、これは単なる最適化です。

于 2012-06-22T20:42:09.973 に答える