Django:用另一个URL参数过滤分页列表

2024-09-29 06:27:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有要用Paginator显示的游戏列表。我也希望能够通过他们的类型过滤游戏。在

在我看来,如果genre参数(“zann”)是URL的一部分,我有简单的代码要检查:

genre = request.GET.get('zanr')

if genre:
    free_games_list = free_games_list.filter(category__id=genre)

在我的视图页面上,我有HTML Select,其中有流派名称和它们的ID值。在

我没有那么漂亮的JS代码,在选择项后重定向到新页面:

^{pr2}$

这对第一个类型选择很好。但是当我选择另一种类型时,URL中的参数现在只是复制如下:zanr=5&zanr=4&zanr=3

我想做更多的JS来删除这个参数,但是我想有更好更简单的选择。在

我也试着在Form内部以Select的形式进行,但是在传递所选值时遇到了问题。。在


Tags: 代码free游戏url类型列表参数js
2条回答

尝试在django视图中而不是javascript中处理查询字符串的创建。在

def myView(request):
    query_string = ''
    genre = request.GET.get('zanr') 
    if genre:
        query_string += '&zanr={0}'.format(genre)
        free_games_list = free_games_list.filter(category__id=genre)

    # Pass query_string to template

然后在模板中将此值附加到paginator按钮。在

^{pr2}$

我建议不要玩URL,而是使用form,并且在表单中应该包含隐藏的分页参数以保留分页条件:

<form action="{% url 'my_search_url' %}" method="GET">
    <label for="zanr">Zanr</label>
    <select name="zanr" onchange="this.form.submit()">
        <option value="1" {% if genre == '1' %}selected{% endif %}>A</option>
        <option value="2" {% if genre == '2' %}selected{% endif %}>B</option>
    </select>
    <!  Add hidden pagination params here  >
</form>

从视图的上下文中发回genre,以在下拉列表中显示选定的gener。在

相关问题 更多 >