Я хочу включить базовую c статистику модели в файл stats. html. Переменные не отображаются в html. Что я делаю не так?
from django.shortcuts import render, get_object_or_404, redirect
from django.db.models import Avg, Sum, Count
from .models import Production
def statistics(request):
nr_of_plays = Production.objects.count()
nr_of_actors = Production.objects.aggregate(num_actors=Sum('nr_actors'))
nr_of_audience = Production.objects.aggregate(num_audience=Sum('est_audience'))
context = {
'nr_of_plays': nr_of_plays,
'nr_of_actors': nr_of_actors['num_actors'],
'nr_of_audience': nr_of_audience['num_audience'],
'test':'abc'
}
return render(request, 'stats.html', context)
Модель:
class Production(models.Model):
title = models.CharField(max_length=200)
nr_actors = models.IntegerField(default=0)
est_audience = models.IntegerField(default=0)
...
urls.py:
path('stats/', views.statistics, name='stats'),
соответствующий раздел базы. html:
<copyright class="text-muted">
<div class="container text-center">
<p>© One World Theatre - {% now "Y" %} {% include 'stats.html' with test=test %} </p>
</div>
</copyright>
И статистика. html шаблон:
{% load static %}
{{ test }} - Stats: {{ nr_of_plays }} plays produced, involving {{ nr_of_actors }} actors, seen by {{ nr_of_audience }} people.
результат: © One World Theater - 2020 - Статистика: поставленные пьесы с участием актеров, просмотренные люди.
РЕДАКТИРОВАТЬ:
Я не упоминал, что использую свой шаблон stats.html
в моем base.html
шаблоне, например, {% include 'stats.html' %}
. Когда я добавляю with test=test
к тегу include, отображается тестовый текст. Но при добавлении with nr_of_plays=nr_of_plays
ничего не происходит: - /.
Я забыл о попытке {% include 'stats.html' %}
в моем базовом шаблоне и просто добавил те переменные там, где они мне нужны, отлично работает. Не DRY, а что делать ...
РЕДАКТИРОВАТЬ 2:
Я был слишком быстр, чтобы плакать о победе. Отредактировал вопрос с последним кодом. Передача переменных в представление, которое обрабатывает основной блок содержимого, работает, но это означает, что мне придется добавлять их в каждое отдельное представление (а не DRY). Все еще не получаю то, что не работает с моей настройкой. example.com/stats.html
отображает именно то, что я хочу, но не показывает переменные, когда я include
это в моем base.html
. with test=test
ничего не делает. Бестолковые (и благодарные за помощь).