Django FormView与CreateView对比

25

Django的FormView和CreateView有什么区别?

我只看到一个区别,FormView需要ModelForm但CreateView不需要。

除此之外,两者都可以创建对象。

1个回答

22

来自Django-docs:

FormView:

显示表单的视图。如果验证错误,则重新显示带有验证错误的表单;如果成功,则重定向到新URL。

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

CreateView:

为创建对象显示表单的视图,如果存在验证错误,则重新显示表单(如果有),并保存该对象。

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

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


2
不一定要选择最佳选项,例如大多数情况下我们不想显示所有模型字段。 - sonus21
2
然后,您可以使用“字段”属性仅包括要显示的模型字段。 - v1k45
有没有考虑添加额外的字段,例如两个模型的组合,还有其他一些使用情况。 - sonus21
1
那么你需要创建一个模型表单。我明确提到了您可以使用createview而无需modelform来通用地创建对象。如果您想要执行未被createview执行的操作,可以创建一个模型表单并覆盖视图的其他方法。 - v1k45
是的,没错,但在我看来,根据使用情况,其中一种比另一种更好。;) - sonus21

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接