<p>url查询字符串参数可能出现多次。例如:</p>
<p><a href="https://domain.tld/path/to/your/blog_tag_index_page/?tag=foo&tag=bar&tag=ni" rel="noreferrer">https://domain.tld/path/to/your/blog_tag_index_page/?tag=foo&tag=bar&tag=ni</a></p>
<p>从请求中获取多个值的方法是使用<code>request.GET.getlist('tag')</code></p>
<pre><code>def get_context(self, request):
tags = request.GET.getlist('tag')
blogpages = BlogPage.objects.filter(tags__name__in=tags)
# Update template context
context = super().get_context(request)
context['blogpages'] = blogpages
return context
</code></pre>
<p>接下来,在前端构建url。使用get和复选框创建from方法。所有复选框都应该具有相同的<code>name="tag"</code>属性</p>
<pre><code><!DOCTYPE html>
<html>
<body>
<form action="." method="get">
<label>
<input type="checkbox" name="tag" value="foo">
Foo
</label><br>
<label>
<input type="checkbox" name="tag" value="bar">
Bar
</label><br>
<label>
<input type="checkbox" name="tag" value="ni">
Ni
</label><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
</code></pre>
<p>如果您不想要复选框,您可以创建一些其他接口并使Javascript更新url</p>
<p>当然,将所有_标记添加到页面上下文中,并迭代所有_标记以获得所需的html</p>
<pre><code>{% for tag in all_tags %}
<label>
<input type="checkbox" name="tag" value="{{ tag }}">
{{ tag }}
</label><br>
{% endfor %}
</code></pre>
<p>这是未经测试的代码,但理论上它应该可以工作</p>
<p>快乐编码</p>