我正在尝试通过表单输入值,然后返回到我的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值正在输入,因为它打印输出。
答案 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变量中的表单。