У меня есть простое веб-приложение, построенное с использованием Python с фляжкой с тремя страницами: main, index и post. Я пытаюсь добраться до раздела «if request.method ==« POST »на индексной странице. Чтобы проверить это, я попросил его отобразить страницу post.html. По какой-то причине, когда я отправляю метод POST с индексной страницы, я вместо этого перенаправляется на мою главную страницу. Код питона выглядит следующим образом:Почему html POST выводит меня на неожиданную страницу?
from flask import Flask, redirect, render_template, request, url_for
app = Flask(__name__)
app.config["DEBUG"] = True
@app.route("/", methods=["GET", "POST"])
def index():
if request.method == "GET":
return render_template("main_page.html")
#implied ELSE here (if it's not GET, do the following for a POST)
return redirect(url_for('index'))
@app.route('/index', methods=['GET', 'POST'])
def new_index():
if request.method == "POST":
#I AM TRYING TO GET HERE
return render_template('post.html')
if request.method == "GET":
return render_template('index.html',)
@app.route('/post')
def post():
return render_template('post.html')
метод POST из index.html приходит от этого:
<div class="row">
<form role="form" method='POST' action='.'>
<textarea class="form-control" name="contents" placeholder="Enter a comment"></textarea>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
Я не особо знаком с HTML, но я попробовал все, что я могу думать , Любой совет?
Это, в общем, не очень удобный способ сделать это. Вы должны просто сделать действие текущей страницей, так что, если вы измените имя своей веб-страницы, это не повлияет на ваш код. –
@Jamie C Я не согласен с этим. Я думаю, что наличие явной конечной точки URI/API в форме делает ее более читаемой и более простой в обслуживании в долгосрочной перспективе. «?» опция является ярлыком, но также изменяет URI, на который вы отправлены. Теперь ваш «GET» происходит от «/ index», а POST отправляет вас в «/ index?», Что не совсем то же самое. – sal