Проблема наследования шаблонов Django: {% if %} Блок не отображается при расширении base.html

Описание проблемы

Я работаю над проектом Django, где у меня есть форма, которая при отправке вычисляет некоторые результаты и отображает их на той же странице. Проблема возникает, когда я использую базовый шаблон (base.html). Без использования base.html все работает отлично, и результаты отображаются корректно. Однако, когда я расширяюсь из base.html, содержимое блока {% if results %}{% endif %} в моем шаблоне test.html вообще не отображается.

base.html

Вот мой base.html:

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}AbiturTest{% endblock %}</title>
    {% load static %}
    <link rel="stylesheet" type="text/css" href="{% static 'main/css/style.css' %}">
    <link rel="icon" type="image/x-icon" href="{% static 'main/img/icon.ico' %}">
    <link rel="apple-touch-icon" href="{% static 'main/img/icon.png' %}">
    <link rel="shortcut icon" href="{% static 'main/img/icon.ico' %}">
</head>
<body>
    <header>
        <nav>
            <ul>
                <li><a href="{% url 'home' %}">Home</a></li>
                <li><a href="{% url 'test' %}">Test</a></li>
            </ul>
        </nav>
    </header>
    
    <div class="container">
        {% block content %}{% endblock %}
    </div>
</body>
</html>

test.html

Вот мой test.html:

{% extends 'main/base.html' %}

{% block title %}Test - AbiturTest{% endblock %}

{% block content %}
    <h1>Тест AbiturTest</h1>
    <form id="test-form" method="post">
        {% csrf_token %}
        <ul>
            {% for question in questions %}
                <li>{{ question.text }}
                    <div class="radio-buttons">
                        <input type="radio" id="q{{ question.id }}_1" class="radio-button" name="answer_{{ question.id }}" value="1" required>
                        <label for="q{{ question.id }}_1" class="radio-label">Полностью не согласен</label>
                        <input type="radio" id="q{{ question.id }}_2" class="radio-button" name="answer_{{ question.id }}" value="2">
                        <label for="q{{ question.id }}_2" class="radio-label">Не согласен</label>
                        <input type="radio" id="q{{ question.id }}_3" class="radio-button" name="answer_{{ question.id }}" value="3">
                        <label for="q{{ question.id }}_3" class="radio-label">Нейтрально</label>
                        <input type="radio" id="q{{ question.id }}_4" class="radio-button" name="answer_{{ question.id }}" value="4">
                        <label for="q{{ question.id }}_4" class="radio-label">Согласен</label>
                        <input type="radio" id="q{{ question.id }}_5" class="radio-button" name="answer_{{ question.id }}" value="5">
                        <label for="q{{ question.id }}_5" class="radio-label">Полностью согласен</label>
                    </div>
                </li>
            {% endfor %}
        </ul>
        <button type="submit" id="submit-button" class="button" disabled>Отправить</button>
    </form>

    {% if results %}
    <div id="result-overlay" class="result-overlay">
        <h2>Результаты:</h2>
        <ul>
            {% for result in results %}
                <li>{{ result.profession }}: {{ result.percentage }}%</li>
            {% endfor %}
        </ul>
        <a href="{% url 'test' %}" class="button enabled">Пройти тест еще раз</a>
    </div>
    {% endif %}
{% endblock %}

views.py

Вот представление, которое обрабатывает форму и отображает шаблон test.html:

from django.shortcuts import render
import json
from django.conf import settings

def home(request):
    return render(request, 'main/index.html')

def test(request):
    if request.method == 'POST':
        with open(settings.JSON_FILE_PATH) as f:
            data = json.load(f)
        questions = data['questions']
        relations = data['relations']
        
        total_scores = {profession['id']: 0 for profession in data['professions']}
        
        # Сбор ответов и расчет баллов
        for question in questions:
            question_id = question['id']
            answer = int(request.POST.get(f'answer_{question_id}'))
            for profession_id, relation in relations[str(question_id)].items():
                total_scores[profession_id] += answer * relation['relation']
        
        # Нормализация баллов для расчета процентов
        total_sum = sum(total_scores.values())
        percentages = {profession_id: (score / total_sum) * 100 for profession_id, score in total_scores.items()}
        
        results = [
            {"profession": next(profession['name'] for profession in data['professions'] if profession['id'] == profession_id), "percentage": percentage}
            for profession_id, percentage in percentages.items()
        ]
        
        return render(request, 'main/test.html', {'questions': questions, 'results': results})
    
    else:
        with open(settings.JSON_FILE_PATH) as f:
            data = json.load(f)
        questions = data['questions']
        return render(request, 'main/test.html', {'questions': questions})

Проблема

Без использования base.html результаты корректно отображаются в test.html. Однако, когда я расширяюсь из base.html, содержимое блока {% if results %}{% endif %} вообще не отображается. Похоже, что переменная results не распознается при использовании базового шаблона.

Что может быть причиной этой проблемы и как ее решить?

Изначально я создал отдельный шаблон для теста (test.html) без расширения какого-либо базового шаблона. Этот отдельный шаблон корректно отображает результаты в блоке {% if results %}{% endif %} после отправки формы.

попробуйте поместить это {% load static %} в верхней части base.html, а не внутри

Вернуться на верх