return redirect()在Flask之前使代码无效

时间:2018-06-09 22:13:46

标签: python flask

我正在使用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()”代码,它将向下滚动到我的文本区域,但它不会再填充。我做错了什么?

非常感谢!

1 个答案:

答案 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 %}