如何从表单获取数据到jinja2

时间:2015-03-06 08:41:35

标签: python flask jinja2

我正在尝试通过表单输入值,然后返回到我的jinja模板。我所知道的并不合理,所以我想我在问我该如何去做我想做的事情?这就是我所拥有的:

的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并让它进入我的jinja并运行我的mongodb查找查询。它可以工作,如果我硬编码值,所以如果我在我的python中它确实Id = 100它可以工作,但如果我这样做虽然论坛没有,并且facultyId值正在输入,因为它打印输出。

4 个答案:

答案 0 :(得分:0)

尝试将其放入大括号中。像这样:

<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>

答案 1 :(得分:0)

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

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

添加

facultyId = int(facultyId) if facultyId else None

答案 2 :(得分:0)

尝试按如下方式设置动作控制器

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

答案 3 :(得分:0)

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