Flask WTform - 表单未定义
Flask WTform - form undefined
我对简单的烧瓶形式有疑问。它说我的表单未定义,但我已经根据几个不同的教程对此进行了检查,我看不出有什么明显的遗漏。任何人都可以帮助我了解我哪里出错了。
我的蓝图在其他方面还不错,它可以呈现静态的 hello worlds 等,这只是我遇到问题的形式。
views.py(在产品蓝图中)
from flask import Blueprint, render_template, request
from products.forms import ContactForm
products_bp = Blueprint('products', __name__, template_folder='templates')
@products_bp.route("/contact", methods=["GET", "POST"])
def contact():
form = ContactForm()
if form.validate_on_submit():
name = form.name.data
email = form.email.data
message = form.message.data
return name + email + message
return render_template('contact.html')
forms.py(在产品蓝图中)
from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, SubmitField
from wtforms.validators import DataRequired, Email
class ContactForm(FlaskForm):
name = StringField('name', validators=[DataRequired()])
email = StringField('email', validators=[DataRequired()])
message = TextAreaField('message', validators=[DataRequired()])
send = SubmitField('send')
contact.html(在产品蓝图的模板文件夹中
{% block content %}
<h1>Contact</h1>
<form action="{{ url_for('products.contact') }}" method=post>
{{ form.name }}
{{ form.email }}
{{ form.message }}
{{ form.submit }}
</form>
{% endblock %}
错误
"/home/mysite/products/templates/contact.html", line 6, in block 'content'
{{ form.name }}
File "/usr/local/lib/python3.9/site-packages/jinja2/environment.py", line 474, in getattr
return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'form' is undefined
啊,我想我发现了错误。我需要在我的视图中定义表单,例如:
return render_template('contact.html')
变成现在
return render_template('contact.html', form=form)
我对简单的烧瓶形式有疑问。它说我的表单未定义,但我已经根据几个不同的教程对此进行了检查,我看不出有什么明显的遗漏。任何人都可以帮助我了解我哪里出错了。
我的蓝图在其他方面还不错,它可以呈现静态的 hello worlds 等,这只是我遇到问题的形式。
views.py(在产品蓝图中)
from flask import Blueprint, render_template, request
from products.forms import ContactForm
products_bp = Blueprint('products', __name__, template_folder='templates')
@products_bp.route("/contact", methods=["GET", "POST"])
def contact():
form = ContactForm()
if form.validate_on_submit():
name = form.name.data
email = form.email.data
message = form.message.data
return name + email + message
return render_template('contact.html')
forms.py(在产品蓝图中)
from flask_wtf import FlaskForm
from wtforms import StringField, TextAreaField, SubmitField
from wtforms.validators import DataRequired, Email
class ContactForm(FlaskForm):
name = StringField('name', validators=[DataRequired()])
email = StringField('email', validators=[DataRequired()])
message = TextAreaField('message', validators=[DataRequired()])
send = SubmitField('send')
contact.html(在产品蓝图的模板文件夹中
{% block content %}
<h1>Contact</h1>
<form action="{{ url_for('products.contact') }}" method=post>
{{ form.name }}
{{ form.email }}
{{ form.message }}
{{ form.submit }}
</form>
{% endblock %}
错误
"/home/mysite/products/templates/contact.html", line 6, in block 'content'
{{ form.name }}
File "/usr/local/lib/python3.9/site-packages/jinja2/environment.py", line 474, in getattr
return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'form' is undefined
啊,我想我发现了错误。我需要在我的视图中定义表单,例如:
return render_template('contact.html')
变成现在
return render_template('contact.html', form=form)