gpt4 book ai didi

python - 使用来自 SQLAlchemy 对象的数据在 flask 中预填充 WTforms

转载 作者:IT老高 更新时间:2023-10-28 21:00:22 26 4
gpt4 key购买 nike

我对 flask 框架相当陌生,正在为一个门户网站创建一个编辑个人资料页面。我卡在一个点上,无法自动填写表格。

这是我的表单类:

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 表单创建一个新实例。然后,您尝试将其添加到 session 中。 session 需要模型,而不是表单。

相反,在验证表单后,您可以将其值与对象相关联。

form.populate_obj(user)  # or whatever your object is called

因为您的对象已经加载,您不需要将其添加到 session 中。您可以删除 db.session.add(query) 并调用 db.session.commit()

关于python - 使用来自 SQLAlchemy 对象的数据在 flask 中预填充 WTforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23712986/

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