如何获得带有用户选择变量的烧瓶终点?

时间:2018-08-22 07:11:33

标签: javascript python html flask jinja2

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

该网页有2个选择字段,用于选择区域和成员类型以过滤出显示在数据表中的成员。

成员终点是这样的

@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

因此,默认网址为domain / members / 0%20basic,显示来自区域0的成员,类型为basic。

在members.html中,我创建了两个用于过滤数据的选择字段。还有一个脚本,可以通过单击“提交”按钮使用选定的变量向端点发出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_id为1并将member_type选择为'admin'时,然后单击提交按钮。我希望网站将定向到我想要的URL(domain / members / 1%20admin)。但这无法定向到我想要的网址。如何正确执行此类过滤器功能?

通过javascript构造GET请求网址是否是实现此目的的首选方法? 因为我必须在javascript中对域进行硬编码。我应该建立另一个过滤端点吗?

更新

修改后的端点为'/ member /'

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

也将javascript中的网址修改为

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

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

0 个答案:

没有答案