我正在使用Flask,我有一个包含2个部分的页面:一个是从一系列复选框中选择并提交您的选择,另一个是您将所有选择放在文本区域中的部分:< / p>
<section id="about">
<div class="main-container">
<form action="" method="post">
{% for event in events: %}
<input type="checkbox" name="new_events" value="{{ event.name }} @ {{ event.venue }} at {{ event.start_date }}"> {{ event.name }} @ {{ event.venue }} at {{ event.start_date }}<br>
{% endfor %}
<input type="submit" value="Submit" align="center">
</form>
</div>
</section>
<section id="services">
<div class="main-container">
<form action="" method="post">
<textarea>
{% for new_event in new_events %}
{{ new_event }}
{% endfor %}
</textarea>
</form>
</div>
</section>
那么我想要做的就是一旦你点击页面的提交按钮重定向到第二部分(id =服务):
@app.route("/", methods=["POST", "GET"])
def index():
events = db.session.query(Event)
new_events = []
if request.method == "POST":
new_events = request.form.getlist('new_events')
return redirect(url_for('index', _anchor="services", new_events=new_events))
return render_template('index.html', events=events, new_events=new_events)
如果我通过注释掉“return redirect()”来运行上面的代码,则文本区域将被填充而没有任何问题。我只需向下滚动即可看到它。一旦我激活“return redirect()”代码,它将向下滚动到我的文本区域,但它不会再填充。我做错了什么?
非常感谢!
答案 0 :(得分:0)
我设法通过消除:
使其成功return redirect(url_for('index', _anchor="services", new_events=new_events)
在第二部分的jinja2模板中调用一个简单的滚动函数:
{% if new_events %}
<script>
$("html, body").animate({ scrollTop: $("#services").offset().top }, 500);
</script>
{% endif %}