Мне нужно использовать метод обновления контекста в каждом представлении, чтобы отображать данные с моей боковой панели. html шаблон, который я включаю в другие шаблоны как часть моей навигации. Есть ли другой способ включить данные из моей боковой панели. html и другие шаблоны? Мне придется сделать это для множества шаблонов, и это не кажется правильным способом сделать это.
blog / views.py
class BlogPostDetailView(DetailView):
model = BlogPost
context_object_name = "post"
template_name = "blog/single.html"
def get_context_data(self, **kwargs):
context = super(BlogPostDetailView, self).get_context_data(**kwargs)
context.update(
{
"categories": Category.objects.all().annotate(
post_count=Count("categories")
)
},
)
return context
Core / views. py
class HomeView(ListView):
model = BlogPost
context_object_name = "posts"
template_name = "core/index.html"
paginate_by = 4
ordering = ["-date_posted"]
def get_context_data(self, **kwargs):
context = super(HomeView, self).get_context_data(**kwargs)
context.update(
{
"categories": Category.objects.all().annotate(
post_count=Count("categories")
)
},
)
return context
ядро / включает / боковую панель. html
...
<div class="sidebar-box ftco-animate">
<h3 class="sidebar-heading">Categories</h3>
<ul class="categories">
{% for category in categories %}
<li><a href="#">{{ category.title }}
<span>({{ category.post_count }})</span></a></li>
{% endfor %}
</ul>
</div>
...