Найти - Пользователи
Полная версия: Вопрос касается Django (повторяются часто одинаковые запросы к БД)
Начало » Django » Вопрос касается Django (повторяются часто одинаковые запросы к БД)
1
Saturn
Получается так что практически в каждом методе повторяются запросы к БД на выборку всех категорий и тегов.
Можно ли как то сократить запросы к БД ?
Я в сою очередь создал два метода для выборки категорий и тегов, и в каждом
render_to_response передаю эти методы. Но мне кажется это не хороший вариант.
FishHook
Код в студию, а то не понятно ничего.
Saturn
Хотел узнать, это нормально или нет, когда практически в каждом методе выполняются одинаковые запросы
….
  return render_to_response('list.html', {"posts":posts, 'category':list_cat(request),
                                            'tags':list_tag(request), 'url':url})
    return render_to_response('post.html', {'post': post, 'form' : form, 'comments':comments,
                                            'category': list_cat(request), 'tags' : list_tag(request)})

А именно повторяются ‘category’:list_cat(request) и tags':list_tag(request)
(Это можно сказать данные статические которые нужны для навигации по сайту)
FishHook
Если посмотришь в сторону CBV, то можно сделать красиво
class MyBaseView(object):
   def get_context_data(self, **kwargs):
        context=super(MyBaseView, self).get_context_data(**kwargs)
        context['tags']=list_tag(self.request)
        context['category']=list_cat(self.request)
        return context
class SomeView(MyBaseView, TemplateView):
    def get_context_data(self, **kwargs):
        context=super(SomeView, self).get_context_data(**kwargs)
        context['post']=some_query_set
        return context
   

В принципе, простор для творчества тут неограничен, можешь сделать свой метод, чтобы каждый раз не вызывать родительский контекст, например.
Saturn
FishHook
Оо, я про такое не знал., буду разбираться. Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB