Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是用摇尾型还是Django型?_Django_Forms_Wagtail - Fatal编程技术网

我是用摇尾型还是Django型?

我是用摇尾型还是Django型?,django,forms,wagtail,Django,Forms,Wagtail,我想向我的Wagtail站点添加一个简单的表单,这将允许一些用户(可能具有适当的权限)创建一个新页面,概述游戏场景。换句话说,就是一个标题字段和一个富文本字段 现在我已经阅读了位于的文档,这与我所需要的很接近,只是AbstractForm类或类似的类似乎是为了让用户设计他们自己的表单,我不希望他们这样做。因此,另一种选择是使用标准的Django表单,如中给出的“示例”。然而,我认为这没有什么用处 所以我的问题是:我是使用(我想)具有“正确”页面处理代码的Wagtail表单,还是用某种方式将Dja

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

现在我已经阅读了位于的文档,这与我所需要的很接近,只是AbstractForm类或类似的类似乎是为了让用户设计他们自己的表单,我不希望他们这样做。因此,另一种选择是使用标准的Django表单,如中给出的“示例”。然而,我认为这没有什么用处

所以我的问题是:我是使用(我想)具有“正确”页面处理代码的Wagtail表单,还是用某种方式将Django表单植入我的Wagtail站点,并希望它与Wagtail内容很好地集成

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


反省一下,我所需要做的(我想)就是定义一个新的页面类型!这将是一种排序形式,我通过检查演示中“创建事件”页面的源代码确认了这一点

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


正如我之前所指出的,这主要是因为我不了解Wagtail,但不知何故,我对Wagtail的用法解释得不太清楚。

我建议使用Wagtail表单,原因如下

  • 强大的开箱即用支持,轻松报告提交内容和电子邮件警报
  • 关于为表单页面和响应页面构建视图的好文档,此外,您还可以向表单页面模型添加一些不错的内容,比如介绍段落
  • 更好的页面处理正如您所提到的,无需考虑如何在现有站点结构中放置表单页面
  • 普通页面的所有好处,如搜索、修订/草稿、现有视图和使用现有视图
即使你可能只(作为超级管理员)创建一个表单(游戏场景),它仍然是值得的

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

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

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

补充资料

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

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

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

  • 创建页面类型。 是的,这就是Wagtail处理表单问题的方式,表单只是一个页面。此表单页面可以存在于页面中您希望它存在的任何位置。这与片段不同,例如,片段是与页面分开使用的模型

  • 链接到表单页面 由于每个表单页面也只是一个页面,因此可以在任何可以链接页面的位置创建指向该表单页面的链接


我刚刚偶然发现了同样的选择,wagtail文档说明:

wagtailforms并不能替代Django的表单支持。它是 专为页面作者构建通用数据而设计 无需编写代码的收集表单。如果你打算建造 将特定行为指定给各个字段(例如 创建用户帐户),或者需要自定义HTML布局,您将 几乎可以肯定的是,标准的Django表单会提供更好的服务,其中 字段在代码中固定,而不是由页面动态定义 作者


因此,这完全取决于您的需要。

谢谢您的回复,但我仍然认为Wagtail在这里可以做一些改进。例如,我不清楚提交的数据将如何保存在数据库中,或者为什么标准Django表单没有简单的页面包装器。部分原因是我对Django不太熟悉,更不用说Wagtail了!嘿,有段时间了,但我想我会回答的。提交的数据保存在一个单独的表中,模型名为FormSubmissions(假设您遵循默认说明),位于json ish字段中(Django不支持所有数据库的json字段,因此它必须是通用文本)。没有一个简单的包装器,因为它不允许用户在Wagtail的管理员中轻松编辑表单。最后,如果您需要Django表单的强大功能,最好使用它,而不是摇摆表单。文档解释说,此功能并不打算取代Django表单。