2012-05-08 2 views
0

Хорошо afternoon..i есть модель с классом, как это:Джанго simplejson

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 script, чтобы построить его на графике. Что такое код для сериализации этого массива ..? Я надеюсь, что было ясно .. заранее спасибо всем тем, кто откликнется ..

ответ

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> 

Теперь вы можете звонить на обычные JS с переменной NUM_JSON.

+0

спасибо за этот ответ, но теперь, если я хочу использовать следующий плагин jqplot: «http://www.jqplot.com/tests/data-renderers.php"..что я должен написать в сценарии, предложенном в этом сайт для построения массива num_json? – dottorg

+0

Чтение документов, кажется, что второй параметр $ .jqplot может быть либо строкой конечной точки, либо js-данными. Поэтому попробуйте $ .jqplot ('mychart', NUM_JSON); –

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 для обработки вы можете сделать это:

# 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, - другой ответ показывает, как вы можете это сделать :)

+0

Во-первых, спасибо за быстрый ответ. simplejson, но тогда я делаю это непосредственно в функции одного и того же файла models.py? теперь я хочу использовать следующий шаблон jquery в шаблоне, чтобы нарисовать вектор «num». Как мне изменить сценарий? http://www.jqplot.com/tests/data-renderers.php – dottorg

+0

@dottorg заполнил мой ответ немного для вас - это вообще помогает? –

Смежные вопросы