我使用Wagtail形式还是Django形式?

时间:2017-05-23 20:45:41

标签: django forms wagtail

我想在我的Wagtail网站上添加一个简单的表单,这将使一些用户(可能具有合适的权限)创建一个新页面,概述游戏场景。换句话说,只是一个标题字段和一个富文本字段。

现在我已经阅读了http://docs.wagtail.io/en/v1.10.1/reference/contrib/forms的文档,这与我需要的文档非常接近,除了AbstractForm类或类似文件似乎是为了让用户设计自己的表单,我不想要它们去做。因此,根据https://github.com/gasman/wagtail-form-example/commits/master给出的“示例”,可以使用标准的Django表单。但是我发现这没有用。

所以我的问题是这样的:我是否使用Wagtail表单(我推测)具有'正确的'页面处理代码,或者我以某种方式将Django表格装入我的Wagtail网站并希望它集成与Wagtail的东西一起好吗?

或者,我可以简单地使用Wagtail表单并禁止用户修改它吗?

在反思中,我需要做的就是(我认为)是定义一个新的页面类型!这将是一种形式,我通过检查演示中“创建事件”页面的来源确认了这一点。

我仍然需要一个链接/按钮来调用相关模型的实例,但这应该不是问题。

正如我之前所说,这很大程度上是由于我对Wagtail的无知,但不知何故使用情况并未得到很好的解释,IMO。

2 个答案:

答案 0 :(得分:1)

我建议使用Wagtail表格,这就是原因;

  • 开箱即用的大力支持,轻松报告提交内容和电子邮件提醒。
  • 围绕构建表单页面和响应页面的视图提供了很好的文档,此外,您还可以像form-section一样为form_page模型添加一些不错的东西。
  • 如您所述,更好的页面处理,无需解决如何将表单页面放在现有网站结构中的问题。
  • 普通网页的所有好处,例如搜索,修订/草稿,现有和使用现有视图。

即使你可能只(作为超级管理员)创建一个表单(Game Scenario),它仍然是值得的。

任何查看您网站的人(或有权通过网页权限查看该网页)都可以查看创建的网页。

您还可以按照此处的说明记录提交表单的用户:

http://docs.wagtail.io/en/v1.10.1/reference/contrib/forms/customisation.html#custom-form-submission-model

有关如何编辑权限的说明,以便具有管理员权限的用户无法编辑表单结构:

http://docs.wagtail.io/en/v1.10.1/topics/permissions.html

其他信息

回复您的问题/评论,为了未来的观众;

  • 提交的数据存储空间 所有表单提交(也称为响应)都存储在表单中。提交表,作为Wagtail表单模块的一部分。如果需要扩展基本功能,可以定义自己的表单提交表。

  • 为什么没有Django表单的页面包装器? 我不确定这一点,主要原因可能是提供基本的用户定义表单作为Wagtail管理UI的一部分。在内部,使用Django表单字段,但动态定义,存储为JSON的提交。再次目的是使用简单的用户定义表单。

  • 创建网页类型。 是的,这就是Wagtail如何处理表单问题,表单只是一个页面。此表单页面可以存在于页面heiracy中您想要的任何位置。这与Snippets不同,例如,它们是与Pages分开使用的模型。

  • 链接到表单页面 由于每个表单页面也只是一个页面,您可以在任何可以链接页面的位置创建链接。

答案 1 :(得分:0)

我偶然发现了同样的选择,并且令人讨厌的文件指出:

  

wagtailforms不是Django表单支持的替代品。它是   设计为页面作者构建通用数据的一种方式   集合表单,无需编写代码。如果你打算建立   为特定字段分配特定行为的表单(例如   创建用户帐户),或者需要自定义HTML布局   几乎可以肯定的是,标准的Django形式可以提供更好的服务   字段在代码中固定,而不是由页面即时定义   作者。

所以它真的取决于你需要的东西。