擅长:python、mysql、java
<p>使用Django的基于类的视图时,如果可能,请避免重写<code>get()</code>或<code>post()</code>。这些方法做了很多工作,如果重写它们,可能需要复制很多内置功能。通常有更具体的方法可以重写。</p>
<p>在您的例子中,可以使用<code>get_queryset</code>方法动态过滤queryset。您可以使用<code>self.request.GET</code>访问GET参数。例如:</p>
<pre><code>class PostsList(ListView):
model = Post
def get_queryset(self):
"""Filter by price if it is provided in GET parameters"""
queryset = super(PostsList, self).get_queryset()
if 'price' in self.request.GET:
queryset = queryset.filter(price=self.request.GET['price'])
return queryset
</code></pre>
<p>如果url捕获参数,则可以使用<code>self.args</code>(位置)和<code>self.kwargs</code>(基于名称)访问它们。</p>
<p>有关详细信息,请参阅<a href="https://docs.djangoproject.com/en/1.8/topics/class-based-views/generic-display/#dynamic-filtering" rel="nofollow">dynamic filtering</a>上的文档。</p>