Краткое описание: Я создаю веб-сайт, на котором отображаются события, которые я удалил с других сайтов.Структуры данных для jinja
Задача: На данный момент я могу отображать события по дням, но вам нужно перечислить все вручную. Нет для циклов.
Это потому, что у меня есть словарь списков, которые я считаю. Чтобы получить титул, одного из событий происходят сегодня синтаксис:
{{D.rows0[1].title}}
где D представляет собой словарь rows0
является динамическим переменной, которая представляет день, rows1
, rows2
также существует. rowsX
содержит title
, date
, x
, y
, z
и др. Информация о событиях.
что бы вернуть что-то вроде «разговоров о й»
Причины я не могу перебирать структуры данных из динамических переменных (я пытался сделать в Jinja
). Я относительно новичок в структурах данных и не понял, что динамические структуры данных вызовут такие проблемы.
Я столкнулся с различными различными циклами и сдался. Затем я решил изменить свою структуру данных на словарь массивов, возникла проблема с передачей словаря массивов на html-страницу.
Заключение. Мой вопрос в том, должен ли я найти способ итерации через динамическую переменную с Jinja
? Найти способ передать массив в файл .html
, или я все делаю неправильно?
ДАЛЕЕ ОБЪЯСНЕНИЕ
функции извлечь информацию из базы данных
d = {}
D = {}
def extractor1(n):
d["date" + str(n)] = (datetime.datetime.now() + datetime.timedelta(days=0)).date()
D["rows" + str(n)] = db.execute ("SELECT * FROM events WHERE date LIKE :date ORDER BY date", date = str(d["date" + str(n)]) +'%')
return d, D
Это структура данных я не могу перебрать с для петель в Джиндже ..
Вторая функция попытка массивов:
для этой функции я никогда не пытался пробовать ее через Jinja из-за ошибок, которые я получал. D и d были все еще словарями, я был немного креативен тем, какими были дата и строение структуры данных, я попробовал массив и словарь. Но, пытаясь исправить и придумать новые проблемы, я решил, что это может быть не самый лучший способ.
def extractor2(n):
d[date[n]] = (datetime.datetime.now() + datetime.timedelta(days=0)).date()
D[rows[n]] = db.execute ("SELECT * FROM events WHERE date LIKE :date ORDER BY date", date = str(str(d[date[n]])) +'%')
return d, D
Код Jinja был всего лишь мириадом различных для петель, из которых никто не работал.
Сообщение о том, как шаблон вызывается (код Python), поможет нам понять, правильно ли вы делаете или совершенно неправильно. Также что вы подразумеваете под динамической переменной? – metatoaster
Так почему бы не использовать переменную 'rows', которая является списком, а не использовать' rows0', 'rows1' и т. Д.? Не производите загрузку нумерованных имен переменных, если вы можете использовать один контейнер; 'for row in D.rows:' тривиально, попытка делать имена динамических переменных в Jinja - это кошмар (и он также находится на Python). –
И если 'D' - это словарь, вы можете перебрать' D' в Jinja, чтобы получить ключи, и вы можете использовать 'D [keyname]' для получения значения. Вы, вероятно, захотите перебрать отсортированные ключи, но это будет использовать * лексикографический * порядок (поэтому 'row10' предшествует' row2'). Вы можете также перебирать 'D.values ()', но словари не сохраняют порядок и не должны использоваться, если порядок важен. –