Python 教程之 Django(4)从模型创建 Django 表格

282 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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 中使用的所有表单字段类型的列表

名字输入
BooleanFieldclass BooleanField(**kwargs)复选框输入
CharFieldclass CharField(**kwargs)文本输入
ChoiceFieldclass ChoiceField(**kwargs)Select
TypedChoiceFieldclass TypedChoiceField(**kwargs)Select
DateFieldclass DateField(**kwargs)日期输入
DateTimeFieldclass DateTimeField(**kwargs)DateTime输入
DecimalFieldclass DecimalField(**kwargs)当 Field.localize 为 False 时,数字输入,否则文本输入
DurationFieldclass DurationField(**kwargs)文本输入
EmailFieldclass EmailField(**kwargs电子邮件输入
FileFieldclass FileField(**kwargs)可清除文件输入
FilePathFieldclass FilePathField(**kwargs)Select
FloatFieldclass FloatField(**kwargs)当 Field.localize 为 False 时,数字输入,否则文本输入
ImageFieldclass ImageField(**kwargs)可清除文件输入
IntegerFieldclass IntegerField(**kwargs)当 Field.localize 为 False 时,数字输入,否则文本输入
GenericIPAddressFieldclass GenericIPAddressField(**kwargs)文本输入
MultipleChoiceFieldclass MultipleChoiceField(**kwargs)选择多个
TypedMultipleChoiceFieldclass TypedMultipleChoiceField(**kwargs)选择多个
NullBooleanFieldclass NullBooleanField(**kwargs)零布尔选择
RegexFieldclass RegexField(**kwargs)文本输入
SlugFieldclass SlugField(**kwargs)文本输入
TimeFieldclass TimeField(**kwargs)时间输入
-----
URLFieldclass URLField(**kwargs)URL输入
UUIDFieldclass 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_suffixlabel_suffix参数允许您基于每个字段覆盖表单的label_suffix
widget小部件参数允许您指定在呈现此字段时要使用的 Widget 类。
help_texthelp_text参数允许您为此字段指定描述性文本。如果提供help_text,则当字段由一种方便的 Form 方法呈现时,该字段将显示在字段旁边。
error_messageserror_messages参数允许您覆盖字段将引发的默认消息。传入包含与要覆盖的错误消息匹配的键的字典。
validators验证程序参数允许您为此字段提供验证函数的列表。  
localize本地化参数允许对表单数据输入以及呈现的输出进行本地化。
disabled.禁用的布尔参数设置为 True 时,将使用禁用的 HTML 属性禁用表单字段,以便用户无法对其进行编辑。