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 }}, и это также создает ту же проблему.

с сейфом calendar with safe

без безопасности enter image description here

У меня была такая же проблема, я использовал 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
Вернуться на верх