我是Flask的初学者。我希望基于前端中最终用户的交互(查询)来进行数据库调用,而不是进行静态数据传递(取决于大小)。 我在网上找不到有关如何进行的任何示例。我一直在想类似的东西:
@app.route("/")
def index():
return render_template('index.html')
@app.before_first_request
def initialize_database():
pass
@app.route('api/data')
def get_data_by_selecting_bounding_box():
pass
数据是推文,用户应能够在地图上选择一个区域(边框),并获取从Mongodb数据库中包含的区域数据中检索到的响应。
答案 0 :(得分:0)
因此您需要解决一些问题:
让我们从mongo连接开始:
from pymongo import MongoClient
client = MongoClient(URI_STRING)
在这里使用pymongo建立mongodb客户端。现在,您可以通过以下方式在mongodb服务上访问数据库:
db = client["my-DB-name"]
从这里,您可以访问诸如位置集合之类的集合,我将其称为locations
。您可以像db.locations.find(...)
现在,您需要查询数据库。您的API需要接受lat1, lat2, long1, long2
来表示边界框的边界。在这里,我将假设它们是docs
.args
@app.route('api/data')
def get_data_by_selecting_bounding_box():
cursor = db.locations.find(
"$and":[
{"lat": {"$gt": requests.args.get("lat1", 0)}},
{"lat": {"$lt": requests.args.get("lat2", 0)}},
{"long": {"$gt": requests.args.get("long1", 0)}},
{"long": {"$lt": requests.args.get("long2", 0)}}
])
现在,您可以return
模板要求的任何方式html
将光标放在此路由处理程序的末尾。可能很简单:
return [doc for docs in cursor]