2015-07-01 2 views
7

В views.py, у меня есть временные ряды данных, хранящихся в словаре следующим образом:Джанго: прохождение JSON с целью шаблона

time_series = {"timestamp1": occurrences, "timestamp2": occurrences} 

где каждый timestamp в UNIX время и occurrences представляет собой целое число.

Есть ли способ передать данные временных рядов как объект json в контексте функции render?

Зачем стоит: Я использую Cal-heatmap на переднем конце, который требует, чтобы данные находились в формате json. Ajax-запросы работают нормально сейчас, но я идеально хотел бы использовать подход render, если это возможно.

ответ

15

Если библиотека frontend нуждается в анализе JSON, вы можете использовать библиотеку json для преобразования питона python в допустимую строку JSON. Используйте escapejs фильтр

import json 

def foo(request): 
    json_string = json.dumps(<time_series>) 
    render(request, "foo.html", {'time_series_json_string': json_string}) 


<script> 
    var jsonObject = JSON.parse('{{ time_series_json_string | escapejs }}'); 
</script> 
+1

Как насчет 'вар JSONObject = {{time_series_json_string}};'? Если вы знаете ** наверняка **, ваши данные не могут содержать экраны unicode или строку ' spectras

+0

@spectras действительно, хорошая точка в контексте этого конкретного вопроса. На всякий случай этот пост интерпретируется для другой полезной нагрузки, я думаю: P –

+0

@ Yuji'Tomita'Tomita это отлично работает! есть ли какая-либо причина для выбора этого подхода по сравнению с методом запроса ajax или наоборот? – jkarimi

2

Вы пробовали передать что-то вроде json.dumps(time_series) в функцию рендеринга?

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