Получение данных Django Python из views.py в объект javascript в template.html - PullRequest
0 голосов
/ 22 сентября 2009

Я использую Django render_to_response для записи данных на html-страницу, но я бы также хотел, чтобы вызов render_ to _response загружал словарь python в ассоциативный массив javascript. Какой лучший способ сделать это?

Ответы [ 3 ]

3 голосов
/ 22 сентября 2009

Преобразуйте его в JSON и включите в ваш template.html внутри тега <script> что-то вроде

var my_associative_array = {{ json_data }}

после того, как JSON-кодировал ваш Python dict в строку и поместил его в контекст, используя ключ json_data.

3 голосов
/ 22 сентября 2009

Vinay Sajip близок, но вы добавляете, чтобы добавить безопасный фильтр, чтобы django не мог автоматически экранировать данные json, поэтому это будет работать (есть другие способы остановить автозапуск, но это самый простой):

 var my_associative_array = {{ json_data|safe }}
0 голосов
/ 22 сентября 2009

Что это значит точно? Если вы хотите сказать, что данные в шаблоне представлены в терминах JavaScript, это не так: вы можете напрямую использовать объекты python в шаблоне. Если вы имеете в виду, как мне вставить литерал JSON из словаря или списка Python в мой шаблон: закодируйте его с помощью simplejson, который входит в Django.

Но вы часто не хотите делать это по нескольким причинам. Если вы включите эти динамические данные в шаблон, вы не сможете так легко их кэшировать. Разве это не должно быть другое представление, которое генерирует JS-файл, который вы включаете? Или, может быть, вызов AJAX, чтобы получить данные, как только страница станет доступной? Выберите, что лучше всего подходит для вашей ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...