获取输入表单不是变量而是url

时间:2016-05-06 12:21:03

标签: html url flask get

我正在构建一个Web服务,以便人们可以搜索数据库。可以说我有用户和公司。每个用户和公司都可以被认为是他们的身份。因此,如果您搜索myurl/users/<id>您获得该用户的信息,另一方面,如果您搜索公司/您获得该公司的信息。 为此,我创建了两个简单的输入文本(一个用于用户,另一个用于公司),人们可以在其中键入<id>。我的问题是,当我从输入文本中获取值时,我得到myrul/users?<id>而不是myurl/users/id。我试图对斜线进行硬编码,然后我得到myrul/users/?<id>。 所以我的问题是如何将输入文本作为网址而不是变量。

我正在使用flask,所以我的html有这样的jinja2代码:

<!-- USER id -->
    <form method='GET' action={{url_for('get_info_by_id', type_collection='user')}}>
        <input type="text" name="my_id"/><input type="submit" value="Go">                         
    </form>

<!-- COMPANY id-->
    <form method='GET' action={{url_for('get_info_by_id', type_collection='company')}}>
        <input type="text" name="my_id"/><input type="submit" value="Go">                      
    </form>

在我的python脚本(烧瓶)

@app.route('myurl/<type_collection>/<my_id>')
get_info_by_id(type_collection,my_id):
    # search into the database and return info about that id

2 个答案:

答案 0 :(得分:1)

正如@dirn在评论中建议的那样,我是通过JavaScript制作的,如果其他人也感兴趣,这里是代码:

HTML:

<!-- USER id -->
<form method='GET' class="search" id="user" action="">
    <input type="text" name="my_id"/><input type="submit" value="Go">
</form>

<!-- COMPANY id-->
<form method='GET' class="search" id="company" action="">
    <input type="text" name="my_id"/><input type="submit" value="Go">
</form>

JS:

$(".search").submit(function( event ){
    event.preventDefault();
    var my_id = $(this).find(":input").val();
    url = 'myurl/'+ $(this).attr("id") + '/' + my_id;
    window.location.href = url;     
});

python(flask)

@app.route('myurl/<type_collection>/<my_id>')
get_info_by_id(type_collection,my_id):
    # search into the database and return info about that id

答案 1 :(得分:0)

您是否有理由不能使用该变量,或者您只是想将其放入网址以便进行搜索?我出去了,假设你只是希望表单和数据库搜索工作,所以尝试以下方法。

像这样调整你的路线:

@app.route('myurl/<type_collection>/')
def findAllTheThings():
    if not request.form['my_id']: # Just check if a specific entity is chosen
        return render_template('YourTemplateHere') # If no entity, then render form 
    entity_id = request.form['my_id']
    get_info_by_id(type_collection, entity_id):
    # search into the database and return info about that id

现在按如下方式调整模板:

<!-- USER id -->
<form method='GET' action={{url_for('findAllTheThings', type_collection='user')}}>
    <input type="text" name="my_id"/><input type="submit" value="Go">                         
</form>

<!-- COMPANY id-->
<form method='GET' action={{url_for('findAllTheThings', type_collection='company')}}>
    <input type="text" name="my_id"/><input type="submit" value="Go">                      
</form>

现在,如果没有选择任何实体,您只需呈现表单即可。你可以投入一个闪光让他们知道他们需要选择一个特定的ID,或者让他们搞清楚。如果已选择实体,您将正确调用该功能。