当前位置: 首页 > 面试题库 >

Python Flask-WTF-使用相同的表单模板进行添加和编辑操作

万坚壁
2023-03-14
问题内容

我刚刚开始使用Flask / Flask-WTF / SQLAlchemy,我看到的大多数示例CRUD代码都显示了用于添加/编辑的单独模板。似乎有两个模板具有几乎完全相同的html形式(例如,books_add.html,books_edit.html)。从概念上讲,对于我来说,拥有一个模板(如“ books_form.html”)更有意义,只需从两个单独的路由定义中对该模板调用render_template即可。我不太确定如何完成此操作,例如:

@app.route('/books/add')
def add_book():
...
render_template('books_form.html', action = 'add')


@app.route('/books/edit/<id>')
def edit_book(id):
...
render_template('books_form.html', action = 'edit', id = id)

但是我不确定我是在正确的轨道上还是偏离最佳实践。感谢任何输入-有关如何处理单个模板文件以处理添加或编辑行为的特定想法。也欢迎示例链接。

谢谢!


问题答案:

绝对没有理由使用单独的模板来添加/编辑不同种类的东西。考虑:

{# 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. ...


 类似资料:
  • 问题内容: 我已经做了一个不错的表格,并使用了一个复杂的“添加”函数来处理它。像这样开始 现在,我真的不想重复该方法中的所有功能,因此我想可以使用完全相同的模板,甚至可以id在表单中添加一个字段,以便该函数知道其正在编辑的内容。但这有几个问题 我将在哪里放置功能?之所以必须在此之后,是因为这是创建文章的地方,但它甚至永远都不会达到那个目的,因为由于唯一的约束,表单是无效的(除非用户编辑了所有内容)

  • But when he heard this, he said:"Those who are well have no need of a physician, but those who are sick. Go and learn what this means,'Idesire mercy, not sacrifice' For I have come to call not the rig

  • 使用 Groovy 模板引擎框架简化报表视图 视图是 MVC 编程的一个重要部分,而 MVC 编程本身又是企业应用程序开发的一个重要组件。在这篇实战 Groovy 的文章中,Andrew Glover 向您介绍了 Groovy 的模板引擎框架是如何用来简化视图编程的,并如何使您的代码更加经久容易维护。 在最近的 实战 Groovy系列中,我们已经介绍过 Groovy 是构建报表统计程序的一个非常好

  • 我有一个用户,可以通过表单注册:姓名、姓氏、电子邮件、电话、密码、用户名。 注册用户可以更改:姓名、姓氏、电话 我的用户类型 我应该如何为注册和更新呈现不同的表单?

  • 我正在使用引导编辑创建一个动态表。我需要添加新行并自动将值填充到可编辑表中。 现有行“Test”是可编辑的,而新行没有引导可编辑属性。我正在使用用于可编辑表。 表格HTML jQuery 值名称和描述将被添加到表中。但它不能被编辑。 这是来自开发者工具的html元素内容。

  • 对于material-table,它们有一个属性来添加一个可编辑行,其中一个空的、可编辑的行被添加到表中,接受输入。我希望Ant的表组件具有相同的行为。您可以在底部的editable下拉切换下找到该行为的示例:https://material-table.com/#/docs/features/editable它们还有一个属性,用于将新行设置在顶部,这也是我想要的。 有没有人做过这个或者看到过这个