将JSON变量从HTML发送到python(flask)

问题描述 投票:-2回答:1

我有一个烧瓶网站,数据来自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,以便我可以在我的查询中使用它

json sqlite flask
1个回答
0
投票

您可以创建一个只在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')

如果你不理解,请告诉我,我可以解释一下

© www.soinside.com 2019 - 2024. All rights reserved.