如何使用用户选择的变量获得Flask终点?

2024-04-29 20:17:05 发布

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

我正在构建一个网页,以显示数据表中的所有成员帐户信息。因此,我用GET方法为此创建了一个“members”端点。你知道吗

该网页有两个选择字段,用于选择区域和成员类型,以筛选出数据表中显示的成员。你知道吗

成员的终点是这样的

@members.route('/members/<int:region_id> <string:member_type>',
               defaults={'page': 1})
def members(page, region_id=0, member_type='basic'):
    member_accounts = MemberModel.query
    .filter_by(region_id=region_id)\
    .filter_by(member_type=member_type)\
    .paginate(page, 25, True)

    return render_template('members.html', member_accounts=member_accounts,
                           region_choices=region_choices,
                           type_choices=type_choices)
    // region_choices and type_choices are dict type data

因此,默认的url是domain/members/0%20basic,它显示来自区域0的成员,类型是basic。你知道吗

在成员.html,我做了两个选择字段来过滤数据。还有一个脚本,通过单击submit按钮将GET请求发送到具有选定变量的端点。你知道吗

<script> function GetFilteredMembers(){ var regions = document.getElementById("filter-region"); var region_selected = regions.options[regions.selectedIndex].value var mem_types = document.getElementById("filter-mem-type"); var mem_type_selected = mem_types.options[mem_types.selectedIndex].value var Url = "domain/members/" + region_selected + "%20" + mem_type_selected; var xmlHttp = new XMLHttpRequest(); xmlHttp.open( "GET", Url, false ); xmlHttp.send( null ); return xmlHttp.responseText; } </script>
<select id="filter-region">
    {% for value, text in region_choices.items() %}
    <option value="{{ value }}">{{ text }}</option>
    {% endfor %}
</select>

<select id="filter-mem-type">
    {% for value, text in mem_type_choices.items() %}
    <option value="{{ value }}">{{ text }}</option>
    {% endfor %}
</select>

<input class="btn -light" type="submit" onclick="GetFilteredMembers()">Submit</input>

当我选择region\u id为1,member\u type为admin时,单击submit按钮。我希望该网站将直接到我想要的网址(域/成员/1%20admin)。但这是无法直接到我想要的网址。我怎样才能正确地完成这样的过滤功能?你知道吗

用javascript构造GET请求url是首选的方法吗? 因为我必须用javascript硬编码这个域。我应该为过滤建立另一个端点吗?你知道吗

更新

将端点修改为“/member/”

added request.get.args('region_id')
added request.get.args('member_type')

还将javascript中的url修改为

'var params = "?" + "region_id=" + region_id_selected + "&member_type=" + mem_type_selected";'

以及

'var Url = "/members/" + params;'

Tags: idgetvaluevartype成员filter端点