Flask - 如何获取引导表单页面的URL?

3

如果两个不同的URL指向相同的表单,如何确定所请求的URL是哪个?

在URLs "/page1""/page2"上,有一个“Add”按钮,它会导航到具有相同URL"/form1"的同一表单。

如果"/page1"导航到表单页面,那么我想在提交表单后将其重定向到"/page1",对于"/page2"也是如此。

这是我尝试过的代码:

@app.route("/page1", methods = ['GET', 'POST'])
def page1():

    # Do something

    return render_template("page1.html", title = "Page 1")


@app.route("/page2", methods = ['GET', 'POST'])
def page1():

    # Do something

    return render_template("page2.html", title = "Page 1")


@app.route("/form1", methods = ['GET', 'POST'])
def form1():

    form = SomeForm()
    # Do something

   if form.validate_on_submit():
       if request.url == "http://127.0.0.1:5000/page1":
           return(redirect(url_for('page1'))

       elif request.url == "http://127.0.0.1:5000/page2":
           return(redirect(url_for('page2'))    

    return render_template("form1.html", title = "Page 1", form = form)

但是,我误解了request.url的作用,它返回表单所在页面的URL。

那么,我应该使用什么方法来确定是page1还是page2导致了表单的提交呢?谢谢。

1个回答

2

找到了解决方案。看起来你需要使用request.referrer

@app.route("/form1", methods = ['GET', 'POST'])
def form1():

    form = SomeForm()
    # Do something

    # Use request.referrer before validation.
    prev_url = request.referrer

   if form.validate_on_submit():
       if request.url == "http://127.0.0.1:5000/page1":
           return(redirect(url_for('page1'))

   elif request.url == "http://127.0.0.1:5000/page2":
       return(redirect(url_for('page2'))    

return render_template("form1.html", title = "Page 1", form = form)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接