Web2py - 表单 & 验证
-
简述
web2py 具有强大的表单生成函数。在 web2py 中构建表单的四种不同方法如下 --
FORM - 就 HTML 助手而言,它被认为是低级实现。FORM 对象知道它的字段内容。
-
SQLFORM - 它为现有数据库提供创建、更新和删除的函数。
-
SQLFORM.factory - 它被认为是 SQLFORM 顶部的抽象层,它生成类似于 SQLFORM 的表单。在这里,不需要创建新的数据库。
-
CRUD 方法- 顾名思义,它提供了创建、检索、更新和删除函数,这些函数具有基于 SQLFORM 的类似函数。
-
-
形式
考虑一个应用程序,它接受用户的输入并有一个“提交”按钮来提交响应。控制器
“default.py”控制器将包含以下相关函数视图
关联视图“default/display_form.html”将以 HTML 形式呈现表单显示为 -上面的示例是普通的 HTML 表单,它要求用户输入。可以使用 FORM 对象等帮助程序生成相同的表单。控制器
“default.py”控制器中的上述函数包括有助于创建表单的 FORM 对象(HTML 帮助程序)。视图
由语句{{= form}}生成的表单序列化了 FORM 对象。当用户填写表单并单击提交按钮时,表单会自动提交,变量request.vars.value及其输入值会显示在底部。 -
SQLFORM
它有助于为现有数据库创建表单。下面讨论其实施步骤。使用DAL建立与数据库的连接,这是使用DAL对象创建的,也称为DAL构造函数。建立连接后,用户可以创建相应的表。因此,我们创建了一个名为“employee”的表。控制器使用以下语句构建表单和按钮 -因此,对于创建的员工表,控制器中的修改将是 -View中没有任何修改。在新的控制器中,有必要构建一个 FORM,因为从表 db.employee 构建的 SQLFORM 构造函数在模型中定义。新表格在序列化时显示如下 -表单中的所有标签都具有从表和字段名称派生的名称。SQLFORM对象还通过将上传的文件保存在“上传”文件夹中来处理“上传”字段。这是自动完成的。SQLFORM 在“textareas”的帮助下以复选框和文本值的形式显示“布尔”值。SQLFORM 也使用 process 方法。如果用户想用关联的 SQLFORM 保存值,这是必需的。如果form.process(keepvalues = True)那么它被接受。例子
-
SQLFORM.factory
有时,用户需要在没有数据库实现的情况下,以已有数据库表的方式生成表单。用户只是想利用 SQLFORM 函数。这是通过form.factory完成的,并在会话中维护。表单将看起来像 SQLFORM,名称和图像作为其字段,但数据库中没有这样的现有表。“default/form_from_factory.html”视图将表示为 - -
增删改查方法
CRUD是在 SQLFORM 之上使用的 API。顾名思义,它用于创建、检索、更新和删除适当的表单。与 web2py 中的其他 API 相比,CRUD 没有暴露;因此,有必要进口它。上面定义的 CRUD 对象提供了以下 API -序号 API 和函数 1 crud.tables()返回数据库中定义的表的列表。2 crud.create(db.tablename)返回表 tablename的创建表单。3 crud.read(db.tablename, id)返回表名和记录 ID的只读形式。4 crud.delete(db.tablename, id)删除记录5 crud.select(db.tablename, query)返回从表中选择的记录列表。6 crud.search(db.tablename)返回一个元组 (form, records),其中 form 是一个搜索表单。7 crud()根据 request.args() 返回上述之一。 -
创建表格
让我们创建一个表单。按照下面给出的代码。模型
在应用程序的模型文件夹下创建一个新模型。该文件的名称为“dynamic_search.py”。控制器
控制器部分下的关联文件“dynamic_search.py”将包含以下代码 -视图
我们可以用下面的视图来渲染它。这是它的样子 -