Проблемы с jinga (django)
Я пытаюсь создать веб сайт календаря который сможет отображать список задач. Вот view.py python import calendar as calendar_engine # Используется calendar_engine что бы избежать колизий имен с моделькой
def render_calendar(request, path, year, month):
try:
calendar = Calendar.objects.get(path=path)
except Calendar.DoesNotExist:
return render(request, "Calendar/404.html", {"text": "calendar not found")
c = calendar_engine.Calendar()
tasks = {}
for weak in c.monthdatescalendar(year, month):
for date in weak: # date is datetime.date object
task = Task()
tasks[date] = task.get_day_tasks(date, calendar) # Функция возвращает список задач по конкретному дню. Её работоспособность гарантирована.
context = {"month": c.monthdatescalendar(year, month), "tasks": tasks}
return render(request, "Calendar/calendar.html", context)
calendar.html
<table>
{% for weak in month %}
<tr>
{% for date in weak %}
<th> {{ tasks[date] }} </th>
{% endfor %}
</tr>
{% endfor %}
</table>
однако это не работает, так как jinja автоматом переводит datetime.date объект в строку (date(2021, 1, 1) -> 1 Jan 2021) Так как в словаре нет такого ключа выходил KeyError. Можете помочь это исправить
Очевидный метод решения не сработал:
- tasks[datetime.year-datetime.month-datetime.day] вызывает проблемы с парсером
Ответы (1 шт):
Автор решения: BlueScreen
→ Ссылка
jinja не может адекватно работать со словарями, так что лучшее что я смог придумать:
{% for date_key, day_num in days.items %}
{% if date == date_key %}
{{ day_num }}
{% endif %}
{% endfor %}