Django 表单组件 | 使用各种组件创建表单17 Mar 2025 | 6 分钟阅读 在本教程中,我们将学习如何在表单中使用各种组件。 Django 表单具有各种属性,可以增强表单的外观。 有很多内置的类,但我们将介绍最常用的表单组件。 这些组件将有助于为任何站点创建更具交互性的表单, 那么,让我们开始吧。 创建项目我们首先创建 Django 项目和应用程序。 然后,我们设置新创建的应用程序的基本配置。 在 Django 中创建表单有三种方法 - 使用 Model Form、使用 Form 类和简单的 HTML 表单。 我们将使用 Form 类。 创建表单在 Hello 项目下的 sampleapp 中创建 forms.py 文件 Hello>sampleapp>forms.py 示例 - 为了呈现这个表单,我们需要创建视图和模板,这些视图和模板将用于将表单显示到屏幕上。 views.py Base.html 为了显示表单,我们将运行以下命令。 点击 http://127.0.0.1:8000/ ![]() 具有字段组件的自定义表单我们使用 CharField() 字段创建一个表单字段,该字段接受文本输入。 我们可以覆盖每个字段的默认组件以用于各种用途。 CharField() 具有默认组件 TextInput,它等效于呈现 HTML 代码 <input type = "text">。 charField() 与 Teaxarea 组件 我们在现有表单中添加 comment 字段,并使用 Textarea 组件。 示例 - 输出 ![]() Textarea 组件等效于 <textarea>....</textarea> 标签,它是一个多行文本输入。 CharField() 与 Textarea 组件属性 我们还可以修改 Textarea 的高度,在组件中指定“行”属性。 示例 - 输出 ![]() 注意 - Textarea 的默认行数为 10。EmailFieldEmailField 用于从用户处获取电子邮件输入。 它的默认输入是 EmailInput,并在纯 HTML 中呈现为 <input type = "email">。 此字段由默认的电子邮件验证器组成,该验证器要求输入中包含 @ 符号才能被视为有效。 让我们看下面的例子。 输出 ![]() BooleanField顾名思义,它从用户处获取布尔输入,即真或假。 默认值为 False,并在 HTML 表单中显示未选中的复选框。 让我们看看下面的例子。 示例 - 输出 ![]() 具有 DataField() 的自定义表单DateField() 接受日期格式的值,例如 2021-08-01。 默认输入是 DateInput,但它看起来像 CharField。 让我们看看下面的例子。 示例 - 输出 ![]() 当我们点击提交按钮时,它会显示“输入有效的日期”警告,因为我们提供了错误的格式日期值。 ![]() DateField() 与 NumberInput 组件属性 要通过下拉列表获取数值,我们可以使用 DecimalField()。 默认组件是 NumberInput。 让我们了解以下示例。 示例 - 输出 ![]() DateField() 与 SelectDateWidget 组件 Django 还提供了使用 SelectDateWidget 手动选择日期的功能,该功能显示了用于月份、日和年的三个下拉菜单。 让我们了解以下示例。 示例 - 输出 ![]() 具有 DecimalField() 的自定义表单要通过下拉列表获取数值,我们可以使用 DecimalField()。 默认组件是 NumberInput。 让我们了解以下示例。 示例 - 输出 ![]() 具有 ChoiceField() 的自定义表单ChoiceField() 允许我们从给定的选择中选择一个或多个选项。 让我们了解以下示例。 示例 - 输出 ![]() ChoiceField() 与 Select 组件 Select 组件处理选择。 它们提供要从选择列表中选择的选项列表。 Select 组件等效于 输出 ![]() 核心参数我们定义了核心参数,这些参数对于所有字段都相同。 以下是一些重要的参数。 required(布尔值)此参数表示这些字段是否是提交表单所必需的。 它接受一个布尔值(真或假),并在字段旁边突出显示星号标记。 默认情况下,该参数为每个值分配 true。 示例 - 输出 ![]() max_length 和 min_length将分配 max_length 以获取值的最大长度,并将分配 min_length 以获取值的最小长度。 让我们了解以下值。 示例 - 输出 ![]() 标签(字符串)我们可以使用字段中的 label 参数创建字段的自定义标签。 让我们了解以下示例。 示例 - 输出 ![]() CharField() 的 Initial(字符串)要将预加载信息添加到输入中,请使用 initial 参数。 让我们了解以下示例。 示例 - ![]() BooleanField() 的 Initial(布尔值)我们将 initial=True 传递给 BooleanField() 以将默认点击设置为复选框。 让我们了解以下示例。 示例 - ![]() DateField() 的 Initial(日期时间)我们还可以初始化 DatefField() 的默认值。 首先,我们需要在文件顶部导入 datetime。 它将设置当前日期。 让我们了解以下示例。 示例 - ![]() MultipleChoiceField此字段用于显示预定义的多个选择选项。 用户可以从预定义的选择中选择选项。 让我们了解以下示例。 示例 - ![]() MultipleChoiceField() 与 CheckboxSelectMultiple 组件我们可以在复选框的形式中添加多个选择选项。 让我们了解以下示例。 示例 - ![]() ModelChoiceField()Django 提供了使用 Django 模型表单的功能。 为此,我们需要在 forms.py 文件中导入模型并使用 ModelChoiceField() 并在表单字段中指定 queryset。 让我们了解以下示例。 发送 Django 联系表单在这里,我们将呈现 Django 传统联系表单。 让我们看看下面的例子。 示例 - 注意 - 我们使用 crispy 表单框架,并将 crispy_form_tag 导入表单模板格式文件。示例 - 我们在文件顶部导入了 send_mail、BadHeaderError 和 HttpResponse。 然后,我们检查了表单是否生成了 post 请求,并检查表单是否有效。 我们定义了主题和消息,然后尝试通过 send_mail 方法向指定的电子邮件地址发送电子邮件。 我们需要在 setting.py 文件中要求 EMAIL_BACKED。 结论本教程介绍了重要的 Django 表单字段以及如何使用组件使其更易于用户使用。 这些组件允许我们创建更多交互式表单,并避免硬编码。 |
我们请求您订阅我们的新闻通讯以获取最新更新。