#python #django
#python #django
Вопрос:
привет: day_records — это массив, я хочу получить доступ к его элементу.если я заменю точку на 0 или 1, это правильно, но когда я использую point , он не может получить доступ к элементу и без синтаксической ошибки.
plant.bind("plothover",
function(event,pos,item){
if(item){
removeTooltip();
var point = item.dataIndex;
showTooltip(item.pageX,item.pageY,"{{day_records.point.date}}");
}else{
removeTooltip();
}
});
итак, как я могу получить доступ к элементу массива с переменной точкой?
Комментарии:
1. Я думаю, что здесь есть некоторая путаница … вы смешиваете шаблоны django и javascript, как будто они могут обмениваться данными в двустороннем режиме. Происходит то, что {{day_records.point.date}} вычисляется в контексте шаблона django, а затем, после того как браузер получает страницу, вычисляется javascript. Шаблон может вставлять данные в javascript, но javascript не может оценить код шаблона django — к моменту запуска javascript код шаблона исчезает.
2. Мой ответ просто повторил бы то, что говорит Аарон.. (Подсказка, подсказка, аарон! : P) Кроме того, даже если бы это был весь код шаблона django, вы не можете выполнять поиск с разрешением переменных подобным образом. day_records.point попытался бы найти атрибуты, индексы и т.д. Для ‘point’, Но не то, что
point
разрешает, например, 0 или 1.3. итак, могу ли я получить доступ к переменной javasript в django templet?
4. Нет, они полностью разделены. Javascript запускается только тогда, когда браузер загружает его.
Ответ №1:
Код вашего шаблона выполняется полностью независимо от JavaScript.
Браузер запускает JavaScript при загрузке страницы на основе любого исходного кода, созданного вашим шаблоном.
Создайте массив JavaScript с помощью языка шаблонов, который может использовать ваш скрипт, или используйте AJAX для запроса данных из django для заданной точки.
day_records = new Array();
{% for point in day_records %}
day_records[{{ forloop.counter0 }}] = '{{ point.date }}';
{% endfor %}
plant.bind("plothover",
function(event,pos,item){
if(item){
removeTooltip();
var point = item.dataIndex;
showTooltip(item.pageX,item.pageY, day_records[point]);
}else{
removeTooltip();
}
});
Ответ №2:
Я пробовал разные вещи, когда наткнулся на эту проблему. Я попробовал точку, это не дало мне того, что я хотел. Я знал, что это должен быть точечный стиль, поскольку в документации django так сказано.
У меня была такая переменная list: food = [{'rice':90},{'beans':56},{'peas':144}]
Наконец, сработало то, что: food.0.rice
дало мне желаемое число (для риса), food.0.beans
дало мне, какое число было для бобов.
Я пошел дальше, чтобы поэкспериментировать food = [
я мог получить доступ к значению groundnuts как
[{'rice':90},{'beans':56}],
[{'banana':90},{'groundnuts':56}]
] food.1.groundnuts
поскольку это второй элемент массива, я надеюсь, что кто-нибудь оценит это