我使用 Wagtail 表单还是 Django 表单?
Do I use a Wagtail form or a Django one?
我想向我的 Wagtail 站点添加一个简单的表单,这将使一些用户(可能具有适当的权限)能够创建一个新页面,概述游戏场景。换句话说,只是一个标题字段和一个 rich-text 字段。
现在我已经阅读了 http://docs.wagtail.io/en/v1.10.1/reference/contrib/forms, which is close to what I need, except that the AbstractForm class or the like appears to be geared towards letting users design their own forms, which I do not want them to do. So the alternative is to use a standard Django form, as per the 'example' given at https://github.com/gasman/wagtail-form-example/commits/master 上的文档。但是我觉得这没什么用。
所以我的问题是:我是使用 Wagtail 表单(我假设)有 'correct' page-handling 代码,还是我以某种方式 shoe-horn Django 表单我的 Wagtail 网站并希望它与 Wagtail 的东西很好地结合?
或者,我可以简单地使用 Wagtail 形式并禁止用户修改它吗?
反思一下,我需要做的(我认为)就是定义一个新的 Page 类型!这将是一种形式,我已经通过检查演示中 'Create Event' 页面的来源来确认。
我仍然需要 link/button 来调用相关模型的实例,但这应该不是问题。
正如我之前指出的,这主要是由于我对 Wagtail 的无知,但不知何故,IMO 的用法并没有得到很好的解释。
我建议使用 Wagtail 形式,原因如下;
- 开箱即用的强大支持,轻松报告提交和电子邮件提醒。
- 有关为表单页面和响应页面构建视图的好文档,此外,您还可以向 form_page 模型添加一些不错的东西,例如介绍段落。
- 您提到的更好的页面处理,无需解决如何将表单页面放入现有网站结构的问题。
- 搜索、revisions/drafts、现有和使用现有视图等普通页面的所有优点。
即使您可能只(作为超级管理员)创建一个表单(游戏场景),它仍然是值得的。
创建的页面可供查看您网站的任何人查看(或有权通过页面权限查看该页面)。
您还可以按照此处的说明记录提交表单的用户:
有关如何编辑权限的说明,以便具有管理员权限的用户无法编辑表单结构:
http://docs.wagtail.io/en/v1.10.1/topics/permissions.html
附加信息
回复您的questions/comments,为了以后的观众;
提交数据存储
所有表单提交(又名响应)都存储在表单中。 提交 table 作为 Wagtail 表单模块的一部分。如果您需要扩展基本功能,您可以定义自己的表单提交 table。
为什么 Django 表单没有页面包装器?
我不确定这一点,主要原因可能是提供基本的用户定义表单作为 Wagtail 管理的一部分 UI。在内部,使用 Django 表单字段但动态定义,提交存储为 JSON。目的再次是拥有简单的用户定义表单。
正在创建页面类型。
是的,这就是 Wagtail 处理表单问题的方式,一个表单就是一个页面。此表单页面可以存在于页面继承中的任何位置。例如,这与 Snippets 不同,Snippets 是与 Pages 分开使用的模型。
链接到表单页面
由于每个表单页面也只是一个页面,因此您可以在任何可以 link 页面的地方为它创建一个 link。
我只是偶然发现了相同的选择,wagtail 文档指出:
wagtailforms is not a replacement for Django’s form support. It is
designed as a way for page authors to build general-purpose data
collection forms without having to write code. If you intend to build
a form that assigns specific behaviour to individual fields (such as
creating user accounts), or needs a custom HTML layout, you will
almost certainly be better served by a standard Django form, where the
fields are fixed in code rather than defined on-the-fly by a page
author.
所以这真的取决于您的需要。
我想向我的 Wagtail 站点添加一个简单的表单,这将使一些用户(可能具有适当的权限)能够创建一个新页面,概述游戏场景。换句话说,只是一个标题字段和一个 rich-text 字段。
现在我已经阅读了 http://docs.wagtail.io/en/v1.10.1/reference/contrib/forms, which is close to what I need, except that the AbstractForm class or the like appears to be geared towards letting users design their own forms, which I do not want them to do. So the alternative is to use a standard Django form, as per the 'example' given at https://github.com/gasman/wagtail-form-example/commits/master 上的文档。但是我觉得这没什么用。
所以我的问题是:我是使用 Wagtail 表单(我假设)有 'correct' page-handling 代码,还是我以某种方式 shoe-horn Django 表单我的 Wagtail 网站并希望它与 Wagtail 的东西很好地结合?
或者,我可以简单地使用 Wagtail 形式并禁止用户修改它吗?
反思一下,我需要做的(我认为)就是定义一个新的 Page 类型!这将是一种形式,我已经通过检查演示中 'Create Event' 页面的来源来确认。
我仍然需要 link/button 来调用相关模型的实例,但这应该不是问题。
正如我之前指出的,这主要是由于我对 Wagtail 的无知,但不知何故,IMO 的用法并没有得到很好的解释。
我建议使用 Wagtail 形式,原因如下;
- 开箱即用的强大支持,轻松报告提交和电子邮件提醒。
- 有关为表单页面和响应页面构建视图的好文档,此外,您还可以向 form_page 模型添加一些不错的东西,例如介绍段落。
- 您提到的更好的页面处理,无需解决如何将表单页面放入现有网站结构的问题。
- 搜索、revisions/drafts、现有和使用现有视图等普通页面的所有优点。
即使您可能只(作为超级管理员)创建一个表单(游戏场景),它仍然是值得的。
创建的页面可供查看您网站的任何人查看(或有权通过页面权限查看该页面)。
您还可以按照此处的说明记录提交表单的用户:
有关如何编辑权限的说明,以便具有管理员权限的用户无法编辑表单结构:
http://docs.wagtail.io/en/v1.10.1/topics/permissions.html
附加信息
回复您的questions/comments,为了以后的观众;
提交数据存储 所有表单提交(又名响应)都存储在表单中。 提交 table 作为 Wagtail 表单模块的一部分。如果您需要扩展基本功能,您可以定义自己的表单提交 table。
为什么 Django 表单没有页面包装器? 我不确定这一点,主要原因可能是提供基本的用户定义表单作为 Wagtail 管理的一部分 UI。在内部,使用 Django 表单字段但动态定义,提交存储为 JSON。目的再次是拥有简单的用户定义表单。
正在创建页面类型。 是的,这就是 Wagtail 处理表单问题的方式,一个表单就是一个页面。此表单页面可以存在于页面继承中的任何位置。例如,这与 Snippets 不同,Snippets 是与 Pages 分开使用的模型。
链接到表单页面 由于每个表单页面也只是一个页面,因此您可以在任何可以 link 页面的地方为它创建一个 link。
我只是偶然发现了相同的选择,wagtail 文档指出:
wagtailforms is not a replacement for Django’s form support. It is designed as a way for page authors to build general-purpose data collection forms without having to write code. If you intend to build a form that assigns specific behaviour to individual fields (such as creating user accounts), or needs a custom HTML layout, you will almost certainly be better served by a standard Django form, where the fields are fixed in code rather than defined on-the-fly by a page author.
所以这真的取决于您的需要。