Django 中的 Form
和 ModelForm
都用于处理表单,但它们有显著的区别。下面通过表格以及示例进行说明。
特性 | Form | ModelForm |
---|---|---|
定义方式 | 手动定义所有字段。 | 自动生成字段,基于与模型(Model)的对应关系。 |
字段与模型的关联 | 不与数据库模型(Model)相关。 | 直接与数据库模型相关,字段映射到模型的字段。 |
使用场景 | 自定义表单,不需要与数据库模型交互的场景。 | 当需要基于数据库模型创建或更新记录时使用。 |
表单验证 | 需要手动定义字段验证规则。 | 自动继承模型中的字段验证规则,可以自定义额外规则。 |
表单保存 | 需要手动编写保存逻辑。 | 提供 save() 方法,直接保存到数据库。 |
代码量 | 需要手动定义字段、验证和保存逻辑,代码量较多。 | 自动生成字段,代码量较少,尤其在处理复杂模型时。 |
Pythonfrom django import forms
class BootStrap:
# 排除此列表中的BootStrap样式
bootstrap_exclude_field = []
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 循环ModelForm中的所有字段,给每个字段的插件设置
for name, field in self.fields.items():
if name in self.bootstrap_exclude_field:
continue
# 字段中有属性,保留原来的属性,没有属性,才增加。
if field.widget.attrs:
field.widget.attrs["class"] = "form-control"
field.widget.attrs["placeholder"] = field.label
else:
field.widget.attrs = {
"class": "form-control",
"placeholder": field.label
}
class BootStrapModelForm(BootStrap, forms.ModelForm):
pass
class BootStrapForm(BootStrap, forms.Form):
pass
你可以使用以下方法来检查两个文件或目录是否位于同一个文件系统:
使用 df
命令
df
命令显示文件系统的磁盘空间使用情况,包括文件系统的挂载点。通过比较两个路径的挂载点,可以确定它们是否在同一个文件系统上。
shdf /path/to/file1
df /path/to/file2
如果这两个命令的输出中的文件系统(即 Filesystem
列)相同,那么这两个文件或目录在同一个文件系统上。