持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
Django 模型窗体是一个用于将模型直接转换为Django形式的类。如果您正在构建一个数据库驱动的应用程序,那么您很可能拥有与Django模型非常接近的表单。现在,当我们的项目准备就绪时,在geeks/models.py 中创建一个模型,
# 从内置库中导入标准 Django 模型
from django.db import models
# 声明一个名为“GeeksModel”的新模型
class GeeksModel(models.Model):
# 模型的字段
title = models.CharField(max_length = 200)
description = models.TextField()
last_modified = models.DateTimeField(auto_now_add = True)
img = models.ImageField(upload_to = "images/")
# 使用模型的标题名称重命名模型的实例
def __str__(self):
return self.title
若要直接为此模型创建表单,请深入了解 geeks/表单.py并输入以下代码:
# 从 Django 导入表单类
from django import forms
# 从 models.py 导入 GeeksModel
from .models import GeeksModel
# 创建 ModelForm
class GeeksForm(forms.ModelForm):
# specify the name of model to use
class Meta:
model = GeeksModel
fields = "__all__"
现在访问 http://127.0.0.1:8000/,
基本表单数据类型和字段列表
表单中最重要的部分也是唯一必需的部分是它定义的字段列表。字段由类属性指定。以下是 Django 中使用的所有表单字段类型的列表
| 名字 | 类 | 输入 |
|---|---|---|
| BooleanField | class BooleanField(**kwargs) | 复选框输入 |
| CharField | class CharField(**kwargs) | 文本输入 |
| ChoiceField | class ChoiceField(**kwargs) | Select |
| TypedChoiceField | class TypedChoiceField(**kwargs) | Select |
| DateField | class DateField(**kwargs) | 日期输入 |
| DateTimeField | class DateTimeField(**kwargs) | DateTime输入 |
| DecimalField | class DecimalField(**kwargs) | 当 Field.localize 为 False 时,数字输入,否则文本输入 |
| DurationField | class DurationField(**kwargs) | 文本输入 |
| EmailField | class EmailField(**kwargs | 电子邮件输入 |
| FileField | class FileField(**kwargs) | 可清除文件输入 |
| FilePathField | class FilePathField(**kwargs) | Select |
| FloatField | class FloatField(**kwargs) | 当 Field.localize 为 False 时,数字输入,否则文本输入 |
| ImageField | class ImageField(**kwargs) | 可清除文件输入 |
| IntegerField | class IntegerField(**kwargs) | 当 Field.localize 为 False 时,数字输入,否则文本输入 |
| GenericIPAddressField | class GenericIPAddressField(**kwargs) | 文本输入 |
| MultipleChoiceField | class MultipleChoiceField(**kwargs) | 选择多个 |
| TypedMultipleChoiceField | class TypedMultipleChoiceField(**kwargs) | 选择多个 |
| NullBooleanField | class NullBooleanField(**kwargs) | 零布尔选择 |
| RegexField | class RegexField(**kwargs) | 文本输入 |
| SlugField | class SlugField(**kwargs) | 文本输入 |
| TimeField | class TimeField(**kwargs) | 时间输入 |
| ----- | ||
| URLField | class URLField(**kwargs) | URL输入 |
| UUIDField | class UUIDField(**kwargs) | 文本输入 |
核心字段参数
核心字段参数是为每个字段提供的参数,用于应用某些约束或将特定特征赋予特定字段。例如,将所需参数 = False 添加到 CharField 将使用户能够将其留空。每个 Field 类构造函数至少采用这些参数。某些 Field 类采用其他特定于字段的参数,但应始终接受以下参数:
.math-table { 边框折叠: 折叠; 宽度: 100%; } .math-table td { 边框: 1px 实心#5fb962; 文本对齐: 左 !重要; } .math-table th { 边框: 1px 实心#5fb962; 填充: 8px; } .math-table tr>th{ 背景色: #c6ebd9; 垂直对齐: 中间; } .math-table tr:n-子(奇数) { 背景颜色: #ffffff; }
| 字段选项 | 描述 |
|---|---|
| required | 默认情况下,每个 Field 类都假定该值是必需的,因此要使其不是必需的,您需要设置 required=False |
| label | 标签参数允许您为此字段指定“人性化”标签。当字段显示在窗体中时,将使用此选项。 |
| label_suffix | label_suffix参数允许您基于每个字段覆盖表单的label_suffix。 |
| widget | 小部件参数允许您指定在呈现此字段时要使用的 Widget 类。 |
| help_text | help_text参数允许您为此字段指定描述性文本。如果提供help_text,则当字段由一种方便的 Form 方法呈现时,该字段将显示在字段旁边。 |
| error_messages | error_messages参数允许您覆盖字段将引发的默认消息。传入包含与要覆盖的错误消息匹配的键的字典。 |
| validators | 验证程序参数允许您为此字段提供验证函数的列表。 |
| localize | 本地化参数允许对表单数据输入以及呈现的输出进行本地化。 |
| disabled. | 禁用的布尔参数设置为 True 时,将使用禁用的 HTML 属性禁用表单字段,以便用户无法对其进行编辑。 |