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

我想用simplejson序列化num []views.py中的数组,以便在第二时刻将此数组传递给jquery脚本以将其绘制在图中..序列化该数组的代码是什么..?我希望我很清楚..提前感谢所有回复的人..

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)

这将转储num到 json 的字符串表示形式,然后您可以将其返回或写入文件,等等。

从视图中您可以选择 - 但如果您的视图是返回一些 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 回答