擅长:python、mysql、java
<p><code>ListView</code>类也有一个<code>get_context_data</code>方法,因此应该重写该方法,而不是<code>get</code>方法。使用<a href="https://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods">^{<cd4>}</a>可以访问<code>BlogBaseView.get_context_data</code>,然后可以扩展结果。在</p>
<p>方法如下:</p>
<pre><code>class BlogIndexView(BlogBaseView, ListView):
queryset = Post.objects.all().order_by('-date_create')
template_name = 'index_blog.html'
context_object_name = 'posts'
def get_context_data(self, **kwargs):
# use the (super) force Luke
context = super(BlogIndexView, self).get_context_data(**kwargs)
if self.request.GET.get('tag'):
context['posts'] = Post.objects.filter(tags__name__in=[self.request.GET.get('tag')])
return context
</code></pre>