我正在构建一个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
答案 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,或者让他们搞清楚。如果已选择实体,您将正确调用该功能。