我正在尝试创建一个查询表单,该查询表单允许我查询mongo数据库并将结果显示在网页上。我正在将python与瓶子框架一起使用。这是我的代码示例
import bottle
import pymongo
@bottle.route('/')
def home_page():
#connect to mongodb
connection = pymongo.MongoClient('localhost', 27017)
#connect to mydb database
db = connection.TestCollection
#connect to collection
data = db.TestData
#finding all data
mydata = data.find()
result = []
for i in mydata:
result.append([i['User'],i['Email'],i['Title']])
output = bottle.template('results.tpl', rows=result)
return output
这将使用瓶子模板results.tpl将mongo数据库中的所有数据打印到网页上
<h1>Results</h1>
<form action="/" method="GET">
enter query: <input name="result" type="text" />
<input type="submit" /><br/>
</form>
<table border="1">
<tbody>
<tr><th>User</th><th>Email</th><th>Title</th></tr>
%for row in rows:
<tr>
%for col in row:
<td>{{col}}</td>
%end
</tr>
%end
<tbody>
</table>
我的问题是我不希望所有数据仅显示要搜索的数据。我希望能够使用该表单发出一个请求,该请求将基于提交的关键字从mongo获取数据。如果可以使用其他框架完成这种类型的查询网络应用,请告诉我。如果您有任何好的链接可以帮助我理解使用请求,我也很乐意。
谢谢。
答案 0 :(得分:0)
将搜索作为查询字符串参数传递到您的路线。因此,例如,如果请求是:
http://www.blah.com/?search=foo
然后您的代码将类似于:
import re
from bottle import route, request
@bottle.route('/')
def home_page():
search = request.query['search']
search_re = re.compile(search)
# mongo stuff
my_data = data.find({
'$or': [
{'User': {'$regex': search_re}},
{'Email': {'$regex': search_re}},
{'Title': {'$regex': search_re}}
]
})
# do stuff with my_data and template
return output
这可能无法完全正常工作,但足以让您如愿以偿。