Форум сайта python.su
Доброе время суток, формучане.
Не знаю в какую сторону копать. Рендерю странички функцией, например:
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... так же отправляется в ренде })
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
})
Отредактировано AlexI (Июль 22, 2016 19:35:19)
Офлайн
Попробуйте Class Based Views https://docs.djangoproject.com/ja/1.9/topics/class-based-views/
Офлайн
Я бы посмотрел в сторону создания своих тегов для темплейтов.
https://docs.djangoproject.com/en/1.9/howto/custom-template-tags/
Тогда просто в темплейте вставляете нужные теги, мол тут новости, а тут каталог, а тут вложенное еще что то. И не надо будет ничего дополнительно во views запрашивать.
Офлайн
Но такое упрощение, чтобы не забыть где-то в какую-нибудь вьюху добавить нужные запросы, столкнуло меня с проблемой - эти запросы не обновляются. Чтобы они обновились нужно перезагружать nginx.Потому что вместо
Class BaseTpl: header = Header.objects.all() catalog = Catalog.objects.all() sub_catalog = SubCatalog.objects.all() indx_meta = IndxMeta.objects.last()
Class BaseTpl: def __init__(self): self.header = Header.objects.all() self.catalog = Catalog.objects.all() self.sub_catalog = SubCatalog.objects.all() self.indx_meta = IndxMeta.objects.last()
Отредактировано Elaphe (Авг. 4, 2016 11:38:27)
Офлайн
Elaphe, большое спасибо!
Офлайн