使用SQLAlchemy对象中的数据预填充flask中的WTforms
我对Flask框架相当陌生,并且正在为Webportal创建编辑配置文件页面。我被困在某个位置,无法自动填写表格。
这是我的表格课:
class EditProfile(Form): username = TextField('Username', [Required()])
email = TextField('Email', [Required()])
about = TextAreaField('About', [Required()])
website = TextField('Website', [Required()])
这是我评估表格的功能。
def editprofile(nickname = None): if g.fas_user['username'] == nickname or request.method == 'POST':
form = EditProfile()
form_action = url_for('profile.editprofile')
if request.method == 'POST' and form.validate():
if form.username.data == nickname :
query = EditProfile(form.username.data,
form.email.data,
form.about.data,
form.website.data,
)
print query #debug
db.session.add(query)
db.session.commit()
flash('User Updated')
print "added"
return(url_for('profile.editprofile'))
return render_template('profile/add.html', form=form,
form_action=form_action, title="Update Profile")
else:
return "Unauthorised"
而我的html表单模板是:
{% extends "base.html" %} {% block title %}
{{ title }}
{% endblock %}
{% block content %}
{% from "_formhelpers.html" import render_field %}
<div id="Edit Profile">
<h2>{{ title }}</h2>
<form method="post" action="{{ form_action }}">
<fieldset>
<legend></legend>
{{ render_field(form.username) }}
{{ render_field(form.email)}}
{{ render_field(form.about )}}
{{ render_field(form.website) }}
</fieldset>
<input type="submit" class="button" value="Save"/>
</form>
</div>
{% endblock %}
我有一个用户类的对象。然后我要从该对象中预填此表单。如何预填充表单中的值。我正在尝试在此处实现编辑配置文件功能。
回答:
创建对象时,需要将其传递给表单。
form = EditProfile(obj=user) # or whatever your object is called
你将遇到一些麻烦
query = EditProfile(form.username.data, form.email.data,
form.about.data,
form.website.data,
)
db.session.add(query)
它创建EditProfile表单的新实例。然后,你尝试将其添加到会话中。会话需要模型,而不是表单。
相反,在验证表单之后,可以将其值与对象相关联。
form.populate_obj(user) # or whatever your object is called
因为你的对象已被加载,所以你无需将其添加到会话中。你可以删除db.session.add(query)
并致电db.session.commit()
。
以上是 使用SQLAlchemy对象中的数据预填充flask中的WTforms 的全部内容, 来源链接: utcz.com/qa/420620.html