0

こんにちは..私はこのようなクラスを持つモデルを持っています:

class Reportage:
    def get_num(self):
        end_date = self.date.end_date
        start_date = self.date.start_date
        duration = time.mktime(end_date.timetuple()) - time.mktime(start_date.timetuple())
        delta_t = duration / 60
        num = []

        for t in range(0,duration,delta_t):
            start = t + start_date
            end = datetime.timedelta(0,t+delta_t) + start_date
            n_num = self.get_num_in_interval(start,end)
            num.append([t, n_num])
        return num

この配列を jquery スクリプトに渡してグラフにプロットするために、 views.py の配列を simplejson でシリアル化したいnum []..その配列をシリアル化するコードは何ですか? 私は明確だったと思います..すべての応答者に事前に感謝します..

4

2 に答える 2

1

@ninefingers の応答に従います。あなたの質問は、そのダンプされたjson文字列をjQueryプラグインで利用できるようにする方法を目的としていると思います.

# views.py

def my_view(request):
# do stuff
num = reportage_instance.get_num()
num_json = simplejson.dumps(num)
return render(request, 'template.html', {
  'num_json': num_json,
})

テンプレートでは、その json obj を Javascript 変数として使用できるようにします。

# template.html

<html>
<body>
<script>
var NUM_JSON = {{num_json|safe}};
myScript.doSomething(NUM_JSON);
</script>
</body>
</html>

これで、NUM_JSON 変数を使用して通常の JS を呼び出すことができます。

于 2012-05-08T17:21:59.200 に答える
0

モデルでこれを行う場合は、次のようにします。

# if this were a models.py file:

import simplejson
# other django imports:

class SomeModel(models.Model):

    property = models.SomeField()...

    def some_function(self):
        num = []

        # full num

        simplejson.dumps(num)

それはjsonの文字列表現にダンプnumされ、それを返すか、ファイルに書き込むことができます。

ビューから選択できますが、ビューが処理のために json を返す ajax ビューである場合は、次のようにすることができます。

# views.py

# ...

def my_ajax_call(request, model_pk):
    try:    
        mymodel = SomeModel.get(pk=model_pk)
    except SomeModel.NotFoundException as e:
        return HttpResonse("Unknown model", status=404)
    else:
        return HttpResponse(mymodel.some_function()) # returns simplejson.dumps(num)

これは、Javascript のテンプレートから使用できます - 他の回答は、それにどのようにアプローチするかを示しています:)

于 2012-05-08T15:20:38.603 に答える