gpt4 book ai didi

python-3.x - WTF Forms Flask中的字段验证,重定向方法

转载 作者:行者123 更新时间:2023-12-03 17:21:50 25 4
gpt4 key购买 nike

我正在尝试创建我的第一个 Flask Web 应用程序并发现以下问题,我有两个页面,第一页应该取玩家名称并将名称提供给下一页,但不幸的是,由于某种原因,名称验证不起作用,我可以将必填字段保留为空,然后使用空名称字段转到下一页。

flask 代码:

class ChooseName(FlaskForm):
first_player_name = StringField("Choose first player name: ", [DataRequired()])
second_player_name = StringField("Choose second player name: ", [DataRequired()])
button = SubmitField("Confirm")


@app.route('/')
def index():
form = ChooseName()
if form.validate_on_submit():
return redirect(url_for('mega'))
return render_template('TIC_TAC_TOE_index.html', form=form)


@app.route('/game_page', methods=["GET", "POST"])
def mega():
player1 = request.args.get('first_player_name')
player2 = request.args.get('second_player_name')
......
return render_template('mega.html', form=form, error=error, x=x,
turn=turn,tornado=tornado, renew=renew, player1=player1,player2=player2)

HTML 模板:
<form action="{{url_for('mega')}}" method="get">
{{ form.hidden_tag() }}
<h4>Please choose players names!</h4>
{{form.first_player_name.label}} {{form.first_player_name}} <br> <br>
{{form.second_player_name.label}} {{form.second_player_name}} <br> <br>
{{form.button}} <br> <br>
</form>

最佳答案

好好看看你的功能 super () ,您不会在下一页返回任何内容。您只是接受输入,但没有以任何形式返回它。

from wtforms import Form, StringField, validators, SubmitField
from flask_wtf import FlaskForm
from flask import Flask, render_template, request


class ChooseName(FlaskForm):
first_player_name = StringField("Choose first player name: ", [validators.DataRequired()])
second_player_name = StringField("Choose second player name: ", [validators.DataRequired()])
button = SubmitField("Confirm")

app = Flask(__name__)
app.config['SECRET_KEY'] = "IT_IS_SECRET"

@app.route('/')
def index():
form = ChooseName()
if form.validate_on_submit():
return redirect(url_for('mega'))
return render_template('TIC_TAC_TOE_index.html', form=form)

@app.route('/game_page', methods=["GET", "POST"])
def mega():
player1 = request.args.get('first_player_name')
player2 = request.args.get('second_player_name')
return player1 + ' ' + player2


if __name__ == '__main__':
app.run(port=5000,debug=True)

尝试运行此代码,希望对您有所帮助。 :-)

关于python-3.x - WTF Forms Flask中的字段验证,重定向方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55117243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com