Это означает, что вы должны либо передавать маркетинговое сообщение при каждом просмотре.
Или вы также можете создать собственный шаблон тега
from django import template
register = template.Library()
@register.simple_tag
def marketing_message():
return MarketingMessage.objects.all()[0]
и затем загрузить пометьте в html
и отобразите результат.
РЕДАКТИРОВАТЬ:
Чтобы иметь сообщение на каждой странице, либо вы включаете сообщение в свой base.html
и расширяете другие шаблоны из базы или Вы должны импортировать и использовать тег шаблона в каждом шаблоне
РЕДАКТИРОВАТЬ 2: Использование в base.html
Предполагая, что приведенный выше код находится в poll_extra.py
, и у вас есть следующая структура, где polls
имя вашего приложения
polls/
__init__.py
models.py
templatetags/
__init__.py
poll_extras.py
views.py
base.html
необходимо:
{% load poll_extras %}
{% marketing_message %}
первая строка загружает тег (ы), а вторая - тег, который возвращает сообщение, оно вызывается именем python функции
, все это описано в официальной документации
Редактировать: используя Middleware из документации по middleware
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
тогда ваше промежуточное ПО должно скорректироваться контекст ответа после (или раньше, не уверенный, имеет ли это значение в вашем случае) представление называется
Также проверьте этот ответ возможно вы попытаетесь получить доступ к значению неправильным способом