HTML-календарь, отображающийся под нижним колонтитулом
Я создал HTML-календарь для своего приложения django. Однако когда я добавляю его в один из моих шаблонов, он добавляет его под нижний колонтитул. Я не понимаю, почему это может произойти.
{% extends "bf_app/app_bases/app_base.html" %}
{% block main %}
{% include "bf_app/overviews/overview_nav.html" %}
<div class="flex justify-between mx-10">
<a href="{% url 'calendar_overview_context' previous_year previous_month %}">< {{ previous_month_name }}</a>
<a href="{% url 'calendar_overview_context' next_year next_month %}">{{ next_month_name }} ></a>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 px-4">
<table>
<thead>
<tr>
<th class="text-left">Transaction</th>
<th class="text-left">Amount</th>
<th class="text-left">Date</th>
</tr>
</thead>
{% for transaction, tally in monthly_budget.items %}
<tr>
<td>{{ transaction }}</td>
<td class="{% if tally|last == "IN" %}text-green-700{% else %}text-red-700{% endif %}">
{{ tally|first|floatformat:2 }}
</td>
<td>{{ transaction.next_date|date:"D, d M, Y" }}</td>
</tr>
{% endfor %}
</table>
</div>
<div>
{{ calendar }}
</div>
{% endblock %}
Я практически полностью следовал этому руководству: https://www.huiwenteo.com/normal/2018/07/24/django-calendar.html
Есть ли что-то, что я упускаю? Это, насколько я понимаю, должно быть над футером, как и все остальное, что я создал.
РЕДАКТИРОВАНИЕ:
Похоже, что проблему вызывает модуль "mark_safe". Я попробовал использовать {{ calendar|safe }}
, и это также создает ту же проблему.
У меня была такая же проблема, я использовал huiwenteo calendar tutorial.
Это странное поведение делает класс Calendar, а точнее метод formatmonth. Потому что он возвращает таблицу календаря, не закрывая html-тег. Поэтому в вашем файле cal/utils.py вы должны добавить cal += f'</table>\n'
к методу formatmonth, перед возвратом calendar.
Вот пример, который сработал у меня.
def formatmonth(self, ....):
events = Event.objects.filter(....)
cal = f'<table border="0" cellpadding="0" cellspacing="0" class="calendar">\n'
cal += f'{self.formatmonthname(self.year, self.month, withyear=withyear)}\n'
cal += f'{self.formatweekheader()}\n'
for week in self.monthdays2calendar(self.year, self.month):
cal += f'{self.formatweek(week, events)}\n'
cal += f'</table>\n'
return cal