Я пытаюсь поместить массив с сервера на веб-страницу через jinja2 в google-движке Google, но, похоже, я не могу его получить, поэтому он читается кодом jQuery. Я довольно новый - впервые я пробовал что-то вроде этого.
Мой код python выглядит следующим образом (с некоторым удаленным кодом для краткости):
import json
jinja2_ENVIRONMENT.filters['json'] = json.dumps
filterList = ["context","home"]
template_values = {
"filterList" : filterList
}
который я передаю на вывод, используя:
self.response.write(template.render(template_values))
атрибут в моем html-шаблоне выглядит так:
filterlist="{{ filterList|json }}"
Моя проблема в том, что массив не читается javascript в браузере. В инспекторе элементов это выглядит так:
filterlist="["context", "home"]"
в то время как для JSON я ДУМАЮ, что хочу что-то вроде "[" context "," home "], чтобы он мог быть прочитан моим кодом jQuery. [edit: это читаемо, но как строка, а не как массив... Я бы предпочел не писать парсер, если мне не нужно].
var filterList = $("body").attr("filterlist");
Спасибо за помощь.
Я попробовал все, что было предложено выше, но все еще имел некоторые проблемы. В конце концов, я смог найти решение, используя метод JSON.parse(). Добавив следующую строку в код jQuery:
var filterList = JSON.parse('{"filterList":'+$tasklist.attr("filterlist")+'}');
Мне удалось получить доступ к массиву как filterList.filterList.
Я не уверен, где я ошибся, но я подозреваю, что я не правильно использую библиотеку python jinja2. Тем не менее, это решение сработало для меня.
Вы уже передаете JSON в шаблон. Поэтому просто выведите его, используя:
filterlist={{ filterList|safe }};
filterlist={{ filterList|json|safe }};
?