Есть много вещей, которые можно улучшить в вашем коде. Давайте go по частям:
1.
marketing_message = MarketingMessage.objects.all()[0]
Это повысит IndexError
, если в вашей базе данных нет записей. Даже при том, что я нахожу странным, почему вы хотели бы сделать такой запрос, вы можете вместо этого сделать MarketingMessage.objects.first()
, который вернет None, если записи не найдены.
2.
def index(request):
products = Product.objects.all()
marketing_message = MarketingMessage.objects.all()[0]
context = {'products':products,'marketing_message':marketing_message}
return render(request,'pro/index.html',context)
Почему вы повторяете тот же запрос, который вы сделали в промежуточном программном обеспечении? В этом нет смысла, если вы уже реализовали это. Помните, что хуки промежуточного программного обеспечения вызываются в каждом запросе / ответе, поэтому все, что вы там обрабатываете, не следует повторно обрабатывать в представлениях.
3.
def process_request(self, request):
print("something")
try:
request.session['marketing_message'] = MarketingMessage.objects.all()[0].message
except:
request.session['marketing_message'] = False
process_request
хук вызывается при каждом запросе , В вашем случае вы хотите, чтобы хук вызывался при обработке ответа. Для этой цели вы можете использовать process_template_response . И нет смысла записывать его в объект сеанса, поскольку вы обрабатываете его снова после каждого запроса.