【问题标题】:Django FormView vs CreateViewDjango FormView 与 CreateView
【发布时间】:2016-07-30 12:16:28
【问题描述】:

Django FormView 和 CreateView 有什么区别?

我看到的唯一区别是,FormView 需要 ModelForm 而 CreateView 不需要。

否则两者都会做同样的事情来创建一个对象。

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    来自 Django 文档:

    FormView:

    显示表单的视图。出错时,重新显示表单 验证错误;成功后,重定向到一个新的 URL。

    它可以用于各种目的,不限于创建对象。一个很好的例子是将其用作联系表格并发送电子邮件而不 在数据库中创建记录

    CreateView:

    显示用于创建对象的表单的视图,重新显示对象 带有验证错误(如果有)的表单并保存对象。

    这个通用视图的唯一目的是创建对象。但它不限于创建对象。您也可以从此视图发送电子邮件(就像 FormView)

    如果您的FormView 创建模型对象,最好使用CreateView 而不是创建模型表单,这就是通用视图的用途,减少重复。

    【讨论】:

    • 不同意最佳选择,例如大多数时候我们不想显示所有模型字段。
    • 那么你可以只包含你想使用fields属性显示的模型字段。
    • 有额外的字段怎么样,例如两个模型的组合,还有一些其他的用例。
    • 那么你必须创建一个模型表单。我清楚地提到您可以使用没有 modelform 的 createview 来一般地创建对象。如果你想做一些createview没有做的事情,你可以创建一个modelform并覆盖视图的其他方法。
    • 是的,这是正确的,但在我看来,根据用例,一个比另一个效果更好;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2018-11-24
    相关资源
    最近更新 更多