如果选择了不同的选项,如何让jinja 2显示不同的div

时间:2015-01-28 20:13:03

标签: python flask jinja2

{% extends "main.html" %}
{% block content %}
<h2> Please select a sector you would like to iterate through:</h2>
<br />
<form method="POST" action="">
<input type="text" name="statement" />
<input type="submit" />
Do you wish the output to be sorted?:
<select>
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
</form>
{% if request.args.get['yes'] %}
dfghjhkl;nbovicudhbnrfmg,hklbjuvhcndmf,
{% elif request.args.get['no'] %}
12345676434565456765456
{% endif %}
{% endblock %}

我想要的是根据选项中选择的内容显示不同的信息。我刚开始使用Flask和Jinja2,所以我对这种编码并不熟悉。

2 个答案:

答案 0 :(得分:2)

你的问题还不清楚。你想让它动态发生吗?如果是这样,那么你必须在前端使用JavaScript。

<div id="output"></div>
<script type="text/javascript">
$('#myselect').on('change', function() {
  var selected = $( "#myselect option:selected" ).text();
  if(selected == "yes") $("#output").html("dfghjhkl;nbovicudhbnrfmg,hklbjuvhcndmf,");
  else $("#output").html("12345676434565456765456");
});
</script>

如果您想提交并获得不同的页面,请将表单的操作更改为GET并创建一个路径以返回您的模板,并创建action到将执行以下操作的路线:

@app.route("/yourform/getinfo")
def show_sorted_info():
  return render_template("results.html")

results.html的模板是这样的:

{% if request.args.get('yes') %}
  dfghjhkl;nbovicudhbnrfmg,hklbjuvhcndmf,
{% elif request.args.get('no') %}
  12345676434565456765456
{% else %}
  no option selected.
{% endif %}

答案 1 :(得分:0)

如果您的表单使用“POST”方法,那么您必须检查request.form而不是request.args。来自文档:

  

形式

     

一个MultiDict,包含来自POST或PUT请求的已解析表单数据。请记住,文件上传不会在此处结束,而是在文件属性中结束。

     

ARGS

     

具有查询字符串的已解析内容的MultiDict。 (问号后面的URL中的部分)。

我猜您必须将表单方法更改为“GET”或更改模板代码才能使用request.form

另外,我的Flask有点生疏,但我认为它是request.args.get('yes')request.args['yes']而不是request.args.get['yes']