如何从表单中获取数据到jinja2

How to get data from a form to jinja2

我正在尝试获取通过表单输入的值,然后返回到我的神社模板中。我知道这没有意义,所以我想我是在问我如何去做我想做的事?这是我所拥有的:

Python

@app.route('/test', methods=['GET', 'POST'] )
    def test():
    posts = db.posts
    facultyId = request.form.get("facultyId","");
    print "facultyId: ",facultyId
    return render_template('form.html',posts=posts,Id=facultyId)

form.html

<form method='post'>
        <table width="80%" border="5" align="center" bgcolor="white">       
            <tbody>
                <tr>
                    <th colspan= "4">
                            Faculty Identification Number: 
                            <input type="text" id="facultyId" name="facultyId" value=""/>

                    </th>       
                </tr>
                    <tr>
                    <th colspan= "4">
                        Number Of Evaluations: 
                            {% if posts.find({"Applicants.appId" : Id},{'Applicants.Evaluators':{'$exists': True }}).count() == 0 %}
                                {{posts.find({"Applicants.appId" : Id},{'Applicants.Evaluators':{'$exists': True }}).count() }}
                            {% else %}
                                {% for post in posts.find({"Applicants.appId" : Id}, { "Applicants.$.Evaluators" : 1 }) %}
                                    {{post["Applicants"][0]["Evaluators"]|length}}
                                {% endfor %}
                            {% endif %}
                    </th>
                    </tr>
                    <th colspan= "4"><button type="submit" >Submit</button></th>

                </tbody>
            </table>
</form>

我希望能够通过表单提交 facultyId 并将其放入我的神社和 运行 我的 mongodb 查找查询中。如果我硬编码其中的值,它会起作用,所以如果我在我的 python 中执行 Id=100 它会起作用,但如果我通过论坛这样做,它不会起作用,并且正在输入 facultyId 值,因为它确实打印出来了。

尽量放在大括号里。像这样:

<form method='post'>
        <table width="80%" border="5" align="center" bgcolor="white">       
            <tbody>
                <tr>
                    <th colspan= "4">
                            Faculty Identification Number: 
                            <input type="text" id="facultyId" name="facultyId" value=""/>

                    </th>       
                </tr>
                    <tr>
                    <th colspan= "4">
                        Number Of Evaluations: 
                            {% if posts.find({"Applicants.appId" : {{Id}}},{'Applicants.Evaluators':{'$exists': True }}).count() == 0 %}
                                {{posts.find({"Applicants.appId" : {{Id}}},{'Applicants.Evaluators':{'$exists': True }}).count() }}
                            {% else %}
                                {% for post in posts.find({"Applicants.appId" : {{Id}}}, { "Applicants.$.Evaluators" : 1 }) %}
                                    {{post["Applicants"][0]["Evaluators"]|length}}
                                {% endfor %}
                            {% endif %}
                    </th>
                    </tr>
                    <th colspan= "4"><button type="submit" >Submit</button></th>

                </tbody>
            </table>
</form>

我认为问题在于您没有将 facultyId 解析为整数。如果您对 100 进行硬编码,它会起作用,因为它是一个整数,但是您从 request.form 中分配的是一个字符串 "100".

之后

facultyId = request.form.get("facultyId","")

添加

facultyId = int(facultyId) if facultyId else None

尝试如下设置动作控制器

<form method='post' action='/test'>

我还建议将您的 posts.find 逻辑放入路由函数中,然后将其结果传递给 posts 变量中的表单。