我有一个烧瓶网站,数据来自sqlite3数据库。我做了一个嵌套的下拉菜单,它是从JSON数组中填充的。
现在我做了一个查询,计算从下拉菜单中选择主题的想法数。但是我在哪里。如何将值从下拉菜单传递给我在python中的查询?
有谁知道如何解决这个问题?
编辑代码:
这是我用来将我的数据从sqlite转换为JSON的代码,所以我有一个下拉列表,这取决于之前的选择。
var keyValueDataHealthRight = {{ keyValueProjectsHealthcare|tojson }};
var keyValueDataEnterpriseRight = {{ keyValueProjectsEnterprise|tojson }};
var keyValueDataEntetainmentRight = {{ keyValueProjectsEntertainment|tojson }};
var stateObjectRight = {
"Entertainment": keyValueDataEntetainmentRight,
"Healthcare": keyValueDataHealthRight,
"Enterprise": keyValueDataEnterpriseRight
};
window.onload = function Right() {
var divisonSelR = document.getElementById("DivisionRightFilter"),
projectSelR = document.getElementById("ProjectRightFilter"),
subProjectSelR = document.getElementById("SubprojectRightFilter");
for (var divisionR in stateObjectRight) {
divisonSelR.options[divisonSelR.options.length] = new Option(divisionR, divisionR);
}
divisonSelR.onchange = function Right() {
projectSelR.length = 1; // remove all options bar first
subProjectSelR.length = 1; // remove all options bar first
if (this.selectedIndex < 1) return; // done
for (var ProjectR in stateObjectRight[this.value]) {
projectSelR.options[projectSelR.options.length] = new Option(ProjectR, ProjectR);
}
};
divisonSelR.onchange(); // reset in case page is reloaded
projectSelR.onchange = function Right() {
subProjectSelR.length = 1; // remove all options bar first
if (this.selectedIndex < 1) return; // done
var subProjectsR = stateObjectRight[divisonSelR.value][this.value];
for (var i = 0; i < subProjectsR.length; i++) {
subProjectSelR.options[subProjectSelR.options.length] = new Option(subProjectsR[i], subProjectsR[i]);
}
}
};
我的查询代码
SELECT Ideastatus,COUNT(*) FROM Idea where project = '{{ variable }} ' GROUP BY ideaStatus ORDER BY IdeaStatus"
我遇到的问题是如何获取所选项目并将其传递给python,以便我可以在我的查询中使用它
您可以创建一个只在Flask应用程序中获取POST方法的视图!
像这样的东西:
@app.route('/get-query', methods=['POST'])
def getQuery(data):
# Example Query
query = 'SELECT * FROM exampleTable WHERE someColumn = {}'.format(data)
# Do stuff with query and return it
return do_stuff(query)
您可以返回JSON函数,您可以返回文本,您可以返回HTML,甚至可以将用户重定向到其他视图。
即使你可以将methods=['GET', 'POST']
添加到你正在使用的视图中,然后检查request.method
是否是POST
并且它是否有data
?这样的东西会起作用
@app.route('/some-route', methods=['GET', 'POST'])
def someView(data=None):
if request.method == 'POST':
if data:
# Do something with data and return
return do_stuff(data)
return "You have to provide data!", 400
return render_template('some_template.html')
如果你不理解,请告诉我,我可以解释一下