Form与ModelForm

文章介绍了Django框架中Form和ModelForm的使用,包括CharField的各种参数如max_length和error_messages,以及如何自定义Widget如TextInput。同时,对比了Form和ModelForm,ModelForm基于模型(Model)并自动包含所有字段。文中还展示了如何在初始化ModelForm时修改字段样式,以及添加验证规则和处理表单异常的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Form与ModelForm
  • 相对于serializers与modelserializers的关系
Form里面的字段继承于 django.froms中
from django import froms

class from(froms.From):
    name=froms.CharField(max_length=12,error_messages={"max_length":"test这是测试error_messages"},widget=forms.TextInput)
    # max_length:指定 CharField 的最大长度。
    #用于指定 CharField 验证失败时的错误信息。
    #required:指定该字段是否为必填字段。如果将 required 设置为 True,则用户必须填写该字段才能提交表单。
    #disabled:指定该字段是否为禁用状态。如果将 disabled 设置为 True,则用户无法编辑该字段。
	#widget:用于指定 CharField 的默认控件。在上述代码中,我们将 widget 属性设置为 forms.TextInput,这意味着该字段的默认控件是文本输入框。

	'''
	widget使用'''
      text_input = forms.CharField(widget=forms.TextInput(attrs={'placeholder': '请输入','class':"helloword"}))
    number_input = forms.IntegerField(widget=forms.NumberInput(attrs={'min': 0, 'max': 100}))
    textarea = forms.CharField(widget=forms.Textarea(attrs={'rows': 5}))
    checkbox = forms.BooleanField(widget=forms.CheckboxInput())
    select = forms.ChoiceField(choices=[('1', '选项1'), ('2', '选项2')], widget=forms.Select())
    radio_select = forms.ChoiceField(choices=[('1', '选项1'), ('2', '选项2')], widget=forms.RadioSelect())


from django.froms import ModelForm
class departform(ModelForm):
    class Meta:
        model=models.UserInfo
        fields="__all__"

    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        for name,field in self.fields.items():
			#修改输入框信息
            if name =="密码":
                field.widget=froms.PasswordInput(attrs={"class":"hello wolrd"})
                continue
            field.widget.attrs={"class":"form-control","placeholder":field.label}
局部构子使用,From和ModelFrom
class from():
    
    class Meta:
        model=models.UserInfo
        fields="__all__"
    def clean_name(self):
        
        #获取id,前提是创建form表单的时候需要传入instance的值
        pk=self.instance.pk
        name=self.cleaned_data.get("name")
        if name =="zeng":
            return name
        else:
            raise forms.ValidationError("该用户错误")
    
form表单 额外添加数据
form =userModelForm(data=request.POST,instance=reo_object)
if form.is_valid():
    form.instance.字段名=(form.instance.字段名 如果想要再用户输入以外增加一点值 默认保存的是用户输入的所有的数据)
    # 在views下异常处理form表单
    form.add_error("字段名","显示字段异常的信息(自定义)")
表单上传文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值