【发布时间】:2019-06-14 06:49:43
【问题描述】:
对象
class MyObj:
def __init__(self, data_dict):
self.id = ''
self.name = ''
self.minDescription = ''
self.descriptions = ''
class MyObjForm(Form):
name = StringField('name')
minDescription = StringField('minDescription')
descriptions = TextAreaField('descriptions')
路由
这在“POST”和“GET”模式下做得很好。提交按钮点击时反应良好。
@app.route("/create", methods=["GET", "POST"])
@login_required
def create():
if request.method == 'POST':
form = MyObjForm(request.form)
if form.validate():
new_obj = MyObj(request.form)
return redirect(url_for("/"))
else:
return render_template('create.html', form=form)
else:
return render_template('create.html', form=MyObjForm())
当我在“GET”模式下路由时,我的代码运行良好,查看有旧的对象数据,但点击提交按钮没有任何反应。
@app.route("/edit/<id>", methods=["GET", "POST"])
@login_required
def edit(id):
if request.method == 'GET':
old_obj = d.get_by_id(id)
form = MyObjForm(obj=old_obj)
return render_template('create.html', form=form, id=id)
else:
#never entry
pass
HTML 'create.html'
<form method="post" role="form">
{{ form.csrf }}
{{ macros.render_field(form.name) }}
{{ macros.render_field(form.minDescription) }}
{{ macros.render_field(form.descriptions) }}
<input class="btn special" type="submit" value="Save"/>
</form>
我试试这个:
<form method="post" role="form" action="{{ url_for('edit', id=id) }}">
还有这个:
class MyObjForm(Form):
id = StringField()
任何没有进展:(
错了吗?
【问题讨论】:
-
我无法理解您的问题到底是什么。你有错误吗?如果不是,您期望什么行为不存在。此外,您在
MyObjForm课程中的缩进已关闭。 -
我没有收到任何错误。我希望我可以使用一个 html 模板来实现添加和编辑产品的方法。但是在产品编辑的情况下,表单不会进入编辑方法,并且当您单击保存按钮时不会发生任何事情。
-
我发现了问题:) 如果在 MyObjForm 创建保存按钮时不使用 args ('obj=new_obj') 在发布模式下调用我的路线 :) 但是现在我的表单中没有数据想改变:(
标签: python flask routes submit