【发布时间】:2014-04-04 06:12:55
【问题描述】:
我有一个非常简单的表格和表格,我正在尝试提交以使用 python 烧瓶。
这个类创建了 sqllite 表(这个工作):
class Country(db.Model):
__tablename__ = 'countries'
countryid = db.Column(db.Integer, primary_key=True)
country = db.Column(db.String(65), unique=True, index=True)
active = db.Column(db.Boolean, default=True)
def __init__(self, country):
"""
Used to create a Country object in the python server scope
"""
self.country = country
通过这个类生成表单:
class CountryForm(Form):
country = StringField('Country name', validators=[Length(0, 64)])
submit = SubmitField('Submit')
页面通过视图显示:
@main.route('/country', methods=['GET','POST'])
def show_CountryForm():
form = CountryForm()
print 'Form Values',form
if form.validate_on_submit():
ctry = Country(country=form.country.data)
db.session.add(ctry)
flash('The country has been added.')
return redirect(url_for('chinese'))
return render_template("country.html", form=form)
html模板页面为:
{% extends "base.html" %}
{% import "_macros.html" as macros %}
{% block title %}Countries{% endblock %}
{% block page_content %}
<div class="container">
<form method="POST" action="/country">
<div>
<label for="country" class="label_control">
Country
</label>
<div class="form_control" id="country">
{{ form.country }}
</div>
</div>
{{ form.submit() }}
</form>
</div>
{% endblock %}
所以一切似乎运行正常,没有错误,但记录没有添加到数据库中。任何帮助将不胜感激。
【问题讨论】:
-
你在使用Flask-WTF吗?如果是这样,CSRF 保护是enabled by default,但您没有使用
{{ form.hidden_tag() }}来包含csrf_token。这会导致表单引发错误,但您不会在任何地方显示这些错误(例如form.errors)。 -
这就是解决问题的方法。非常感谢。
标签: python python-2.7 flask flask-sqlalchemy flask-wtforms