Не знаю в какую сторону копать. Рендерю странички функцией, например:
def index(request): header = Header.objects.all() catalog = Catalog.objects.all() sub_catalog = SubCatalog.objects.all() indx_meta = IndxMeta.objects.last() #...etc.. выходит порядка 10-ка вызовов return render('index.html', { 'header': header, 'catalog': catalog, # ...etc... так же отправляется в ренде })
Из этого десятка примерно 2\3 однотипные и их приходится копипасить из вьюхи в вьюху. Это неудобно.
Я подумал и решил поступить просто (оказалось не все так просто, заодно буду благодарен за пояснения в матчасти) - я убрал все эти однотипные запросы в отдельный класс, который потом удобно добавляется одной строчкой в других вьюхах и тянут за собой весь длинный список типичных запросов. Вышло что-то типа:
Class BaseTpl:
header = Header.objects.all()
catalog = Catalog.objects.all()
sub_catalog = SubCatalog.objects.all()
indx_meta = IndxMeta.objects.last()
def index(request):
basetpl = BaseTpl()
news = News.objects.all()
page = Page.objects.all()
return render ('index.html', {
'basetpl': basetpl,
'news': news,
'page': page
})
Потом в форматировании шаблонов удобно работать с этим basetpl, т.к. к нему прикручены все нужные мне запросы.
Но такое упрощение, чтобы не забыть где-то в какую-нибудь вьюху добавить нужные запросы, столкнуло меня с проблемой - эти запросы не обновляются. Чтобы они обновились нужно перезагружать nginx.
Помогите разобраться, как вообще в django правильно организовать подобное?