我有一个flask网站,数据来自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,以便我可以在查询中使用它
答案 0 :(得分:0)
您可以创建一个仅在Flask App中获得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')
让我知道你是否不理解,以便我进一步解释