我找不到将数据从提交的表单重定向到REST api的正确方法。
当前-像下面的示例一样-视图/路由中处理了“ POST”方法(请参见路由“ add_person()”)。
我的样本数据模型(基于SQLAlchemy):
class Person(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20))
通过html呈现的表单(基于wtforms):
class PersonForm(FlaskForm):
name = TextField("Person name", validators=[DataRequired()])
查看/路线声明:
@views.route('add_person', methods=["GET", "POST"])
def add_person():
form = PersonForm()
if request.method == 'POST' and form.validate_on_submit():
person = Person()
person.name = form.name.data
db.session.add(person)
db.session.commit()
return redirect(url_for('view.add_person'))
return render_template('person_add.html', form=form)
HTML模板:
<form method="POST" action="/add_person">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name(size=20) }}
<input type="submit" value="Submit">
</form>
现在,我想将与数据库/ CRUD相关的操作委派给REST api。
为“人员”数据模型生成的API端点是:“ / api / person ”。
如果我从以下位置切换表单的“操作”:
"/add_person"
至:
"/api/person",
然后将我重定向到API网址,因此我认为这不是正确的方法。
我认为我仍然应该使用视图/路由处理并在那里进行POST api调用,而不是持久保存“ Person”对象。这是最干净的解决方案吗?我该如何处理?
我自己回答。我最终停留在Flask中处理的表单的“ / add_person” POST操作中,然后使用Python“ requests”库向API端点发出请求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句