Flask form.validate_on_submit() 没有响应
Flask form.validate_on_submit() does not respond
我正在尝试创建一个 Flask 应用程序,您可以在其中搜索 'car_name' 术语,它将 return 一个 HTML 模板,其中 car_name 替换为 'car_name'。 form.validate_on_submit() 没有错误,但是当您单击“提交”按钮时没有任何反应。
我看过类似的问题,但它们都是关于错误的,而在我的问题中,没有任何反应(没有错误,但也没有响应)。
任何帮助将不胜感激,谢谢。
这是我的主要应用程序代码:
from flask_wtf import FlaskForm
from flask import Flask, flash, render_template, request, redirect
from wtforms import Form, StringField, SelectField, SubmitField
from wtforms.validators import Required
#Flask application object
app = Flask(__name__)
app.config['SECRET_KEY'] = 'jacky'
class SearchForm(FlaskForm):
motor_name = StringField("", validators=[Required()])
submit = SubmitField('Submit')
@app.route('/', methods=['GET', 'POST'])
@app.route('/home')
def index():
form = SearchForm()
print(form.errors)
motor_name = None
if form.validate_on_submit():
motor_name = form.motor_name.data
return redirect(url_for('car', car_name=motor_name))
return render_template('homepage.html', form=form)
@app.route('/car/<car_name>', methods=['GET', 'POST'])
def car(car_name):
return render_template('carpage.html', car_name=car_name)
这是 homepage.html 代码
{{ form.csrf_token }}
{{ form.protein_name.label }} {{ form.protein_name() }}
{{ form.submit() }}
我在代码中发现了 3 个错误,当我在 console/termina/cmd.exe 中 运行 代码时,我看到了错误消息。
首先:您在模板中使用了 proteine_name
而不是 motor_name
。
其次:你忘了<form method="POST"></form>
第三:你忘记导入了url_for
你没有看到错误是 st运行ge。
我使用 render_template_string
而不是 render_template
只是为了更容易 运行 将所有代码都放在一个文件中。
from flask_wtf import FlaskForm
from flask import Flask, flash, render_template, request, redirect, url_for, render_template_string
from wtforms import Form, StringField, SelectField, SubmitField
from wtforms.validators import Required
#Flask application object
app = Flask(__name__)
app.config['SECRET_KEY'] = 'jacky'
class SearchForm(FlaskForm):
motor_name = StringField("", validators=[Required()])
submit = SubmitField('Submit')
@app.route('/', methods=['GET', 'POST'])
@app.route('/home')
def index():
form = SearchForm()
print(form.errors)
motor_name = None
if form.validate_on_submit():
motor_name = form.motor_name.data
return redirect(url_for('car', car_name=motor_name))
return render_template_string('''<form method="POST">
{{ form.csrf_token }}
{{ form.motor_name.label }} {{ form.motor_name() }}
{{ form.submit() }}
</form>''', form=form)
@app.route('/car/<car_name>', methods=['GET', 'POST'])
def car(car_name):
print('car_name:', car_name)
#return render_template('carpage.html', car_name=car_name)
return render_template_string('car_name: {{car_name }}', car_name=car_name)
app.run()
我正在尝试创建一个 Flask 应用程序,您可以在其中搜索 'car_name' 术语,它将 return 一个 HTML 模板,其中 car_name 替换为 'car_name'。 form.validate_on_submit() 没有错误,但是当您单击“提交”按钮时没有任何反应。 我看过类似的问题,但它们都是关于错误的,而在我的问题中,没有任何反应(没有错误,但也没有响应)。 任何帮助将不胜感激,谢谢。
这是我的主要应用程序代码:
from flask_wtf import FlaskForm
from flask import Flask, flash, render_template, request, redirect
from wtforms import Form, StringField, SelectField, SubmitField
from wtforms.validators import Required
#Flask application object
app = Flask(__name__)
app.config['SECRET_KEY'] = 'jacky'
class SearchForm(FlaskForm):
motor_name = StringField("", validators=[Required()])
submit = SubmitField('Submit')
@app.route('/', methods=['GET', 'POST'])
@app.route('/home')
def index():
form = SearchForm()
print(form.errors)
motor_name = None
if form.validate_on_submit():
motor_name = form.motor_name.data
return redirect(url_for('car', car_name=motor_name))
return render_template('homepage.html', form=form)
@app.route('/car/<car_name>', methods=['GET', 'POST'])
def car(car_name):
return render_template('carpage.html', car_name=car_name)
这是 homepage.html 代码
{{ form.csrf_token }}
{{ form.protein_name.label }} {{ form.protein_name() }}
{{ form.submit() }}
我在代码中发现了 3 个错误,当我在 console/termina/cmd.exe 中 运行 代码时,我看到了错误消息。
首先:您在模板中使用了 proteine_name
而不是 motor_name
。
其次:你忘了<form method="POST"></form>
第三:你忘记导入了url_for
你没有看到错误是 st运行ge。
我使用 render_template_string
而不是 render_template
只是为了更容易 运行 将所有代码都放在一个文件中。
from flask_wtf import FlaskForm
from flask import Flask, flash, render_template, request, redirect, url_for, render_template_string
from wtforms import Form, StringField, SelectField, SubmitField
from wtforms.validators import Required
#Flask application object
app = Flask(__name__)
app.config['SECRET_KEY'] = 'jacky'
class SearchForm(FlaskForm):
motor_name = StringField("", validators=[Required()])
submit = SubmitField('Submit')
@app.route('/', methods=['GET', 'POST'])
@app.route('/home')
def index():
form = SearchForm()
print(form.errors)
motor_name = None
if form.validate_on_submit():
motor_name = form.motor_name.data
return redirect(url_for('car', car_name=motor_name))
return render_template_string('''<form method="POST">
{{ form.csrf_token }}
{{ form.motor_name.label }} {{ form.motor_name() }}
{{ form.submit() }}
</form>''', form=form)
@app.route('/car/<car_name>', methods=['GET', 'POST'])
def car(car_name):
print('car_name:', car_name)
#return render_template('carpage.html', car_name=car_name)
return render_template_string('car_name: {{car_name }}', car_name=car_name)
app.run()