Колба - Как получить URL страницы, которая привела к форме? - PullRequest
0 голосов
/ 26 мая 2018

Если 2 разных URL ведут к одной и той же форме, как вы определяете, когда URL запрашивает форму?

В URL "/page1" и "/page2" есть кнопка «Добавить», которая ведет кта же форма с тем же 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, на котором находится форма.

* 1018Итак, какой метод я должен использовать, чтобы определить, была ли страница1 или страница2, которые привели к форме?Спасибо.

1 Ответ

0 голосов
/ 26 мая 2018

Нашел решение.Похоже, вам нужно использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...