绝对没有理由使用单独的模板来添加/编辑不同种类的东西。考虑:
{# data.html #}<!-- ... snip ... -->{% block form %}<section><h1>{{ action }} {{ data_type }}</h1><form action="{{ form_action }}" method="{{ method | d("POST") }}">{% render_form(form) %}</form></section>{% endblock form %}忽略宏
render_form工作原理(在WTForms文档中有一个示例)-它只需要一个WTForms类型的对象并将表单呈现在无序列表中。然后,你可以执行以下操作:
@app.route("/books/")def add_book(): form = BookForm() # ... snip ... return render_template("data.html", action="Add", data_type="a book", form=form)@app.route("/books/<int:book_id>")def edit_book(book_id): book = lookup_book_by_id(book_id) form = BookForm(obj=book) # ... snip ... return render_template("data.html", data_type=book.title, action="Edit", form=form)但是你不必将自己局限于书籍:
@app.route("/a-resource/")def add_resource(): # ... snip ... return render_template("data.html", data_type="a resource" ...)# ... etc. ...


